我有以下目录结构:
.
|
|--- __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)
你知道吗配置.py(福德拉):
something = "A"
你知道吗配置.py(文件夹B):
something = "B"
scriptA.py
应该从FolderA
导入config.py
,从FolderB
导入scriptB.py
和config.py
。你知道吗
现在,在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"
由于某些原因,scriptB中没有使用FolderB中的配置
我读过this resource,它告诉我这在python3中是不可能的。但是,是否有一个合理的解决方法,以便我可以完全导入和使用main.py
(例如import FolderA.config as configA
和中的所有脚本和配置,以确保脚本也可以在各自的文件夹中执行?你知道吗
编辑:
我添加了一个工作主.py这清楚地表明了问题所在。你知道吗
我使用
imp.load_source
解决了这个问题,正如this answer中所建议的:你知道吗主.py地址:
输出:
我不知道我是否理解错了什么,但它应该与:
或者您可以从执行一个名为
foo
的函数脚本a.py:FolderA.scriptA.foo()
相关问题 更多 >
编程相关推荐