我有一个像这样的目录结构:
PYTHONPATHDIR
App1
someModule.py
utils.py
utils
hasClassIWantToImport.py
我想要someModule从utils.hasClassIWantToImport导入一些东西。我打电话的时候:
from utils.hasClassIWantToImport import ClassIWant
它无法解析“hasClassIWantToImport”,因为它认为我在谈论当前目录中的utils.py。
我如何解决这个问题?我知道我可以重命名其中一个“utils”但不愿意......
答案 0 :(得分:1)
不确定我是否已正确理解您的目录设置,但您可以尝试:
import sys
sys.path.insert(0,'/path/to/utils')
from hasClassIwantToImport import ClassIWant
答案 1 :(得分:1)
没有任何方法可以同时保持对PYTHONPATHDIR/utils
和PYTHONPATHDIR/App1/utils.py
的访问权限,而无需相对于其他内容引用其中一个PYTHONPATHDIR
和utils.hasClassIWantToImport
。
如果您修改路径以使utils.py
位于列表的首位,则可以导入App1
,但您将无法访问__init__.py
。
关于您可以做的最好的事情是通过将/path/to/utils
文件放入其中来制作sys.path
文件包并像@Gryphius建议的那样挖掘您的路径(即将utils.hasClassIWantToImport
放在from utils.hasClassIWantToImport import ClassIWant
的头部{1}})。如果您想要访问utils.py
,那么
from App1.utils import ClassIWantFromApp1
要导入相对于utils.py
的文件,您将
{{1}}
然而,这是一个可怕的黑客,只是为了避免重命名{{1}}。我建议你自己保存路径操作的长期头痛并重命名该文件。