从具有重复文件名的子文件夹导入

2024-09-30 07:34:49 发布

您现在位置: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)

你知道吗配置.py(福德拉):

something = "A"

你知道吗配置.py(文件夹B):

something = "B"

scriptA.py应该从FolderA导入config.py,从FolderB导入scriptB.pyconfig.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这清楚地表明了问题所在。你知道吗


Tags: pathpyimport脚本configinitosmain
2条回答

我使用imp.load_source解决了这个问题,正如this answer中所建议的:

你知道吗主.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"

我不知道我是否理解错了什么,但它应该与:

import FolderA
import FolderB

print(FolderA.scriptA.config.something)

或者您可以从执行一个名为foo的函数脚本a.py:FolderA.scriptA.foo()

相关问题 更多 >

    热门问题