python - 从具有重复文件名的子文件夹导入
问题描述
我有以下目录结构:
.
|
|--- __init__.py
|--- main.py
|--- FolderA
| |
| |--- __init__.py
| |--- scriptA.py
| |--- config.py
|--- FolderB
|
|--- __init__.py
|--- scriptB.py
|--- config.py
脚本A.py:
import config
print(config.something)
脚本B.py:
import config
print(config.something)
config.py(文件夹A):
something = "A"
config.py(文件夹B):
something = "B"
scriptA.py
应该导入config.py
fromFolderA
和from scriptB.py
。config.py
FolderB
现在,main.py
我想直接导入两个脚本和两个配置。所有.py
文件都应直接在其各自的位置执行,即scriptA
应在FolderA
和main.py
中运行.
主要.py:
import sys, os
sys.path.append(os.path.join(os.path.dirname(__file__), 'FolderA'))
sys.path.append(os.path.join(os.path.dirname(__file__), 'FolderB'))
from FolderA import scriptA #runs scriptA
from FolderB import scriptB #runs scriptB
输出:
"A"
"A" #should be "B"
由于某种原因,来自 FolderB 的配置未在 scriptB 中使用
我已经阅读了这个资源,它告诉我这在 python3 中是不可能的。但是,是否有合理的解决方法,以便我可以完全导入和使用main.py
(例如import FolderA.config as configA
)中的所有脚本和配置,并确保脚本也可以在其各自的文件夹中执行?
编辑:
我添加了一个可以清楚地显示问题的工作 main.py。
解决方案
我按照这个答案imp.load_source
中的建议解决了这个问题:
主要.py:
from imp import load_source
config=load_source('config','/home/mtoller/mre/FolderA/config.py')
from FolderA import scriptA
config=load_source('config','/home/mtoller/mre/FolderB/config.py')
from FolderB import scriptB
输出:
"A"
"B"
推荐阅读
- python - 按组滚动总和
- bash - cygwin、bash、sed 和 export 引起的奇怪行为
- objective-c - 在 Objective-C 中的函数调用后等待特定时间
- swift - Swift 动态 UIPickerView
- python - 有没有办法在 python 的列表中混合/“洗牌”值?
- typescript - D3js有向力图 - 不透明度不会即时改变
- r - 是否可以在单个 data.table 表达式中按 data.table X[Y] 进行子集化并按 Y 中的变量分组?
- ios - 在 ScrollView 中设置 ContentView 高度以动态更改
- regex - 正则表达式捕获日期,然后是文本
- kiwi-tcms - 升级到 Kiwi 5.3.1 后无法通过 Kiwi TCMS Python API 创建测试运行