我正在努力从一个目录导入文件。
Fitv/
__init__.py
BrowserPool.py
FitvTests/
__init__.py
environment.py
因此,使用上述文件结构,我想将BrowserPool导入环境。
我从开始:
from Fitv.BrowserPool import BrowserPool
得到了:
File "..\environment.py", line 4, in <module>
from Fitv.BrowserPool import BrowserPool
ModuleNotFoundError: No module named 'Fitv'
看看我尝试过的各种来源:
from .. import BrowserPool
我明白了:
File "..\environment.py", line 3, in <module>
from .. import BrowserPool
KeyError: "'__name__' not in globals"
尝试(使用的绝对路径):
import os, sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath('D:/Dev/Python/Fitv-master-new/Fitv/'))))
from Fitv.BrowserPool import BrowserPool
知道:
File "..\environment.py", line 3, in <module>
from Fitv.BrowserPool import BrowserPool
ModuleNotFoundError: No module named 'Fitv'
尝试(使用的相对路径):
import sys
sys.path.append('/Fitv-master-new/Fitv/')
from Fitv import BrowserPool
知道:
File "..\environment.py", line 8, in <module>
from Fitv import BrowserPool
ModuleNotFoundError: No module named 'Fitv'
我在做错什么以及如何解决?
答案 0 :(得分:1)
Python中的导入始终相对于Python解释器运行的路径,以及引用中包含environment.py
的{{1}}的路径:
..
很明显,您正在File "..\environment.py", line 8, in <module>
下的子目录中运行environment.py
,而不是FitvTests
所在的目录,在这种情况下,{{1} }在您的environment.py
语句中只会引用..
目录,而不是其父目录import
。
您应该从FitvTests
目录运行Fitv
,或者如果有充分的理由从当前运行它的子目录运行它,请使用environment.py
代替请参考目录2级:
FitvTests