我正在努力从一个目录导入文件。

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'


我在做什么错,我该如何解决?

最佳答案

Python中的导入始终相对于Python解释器运行的路径以及引用中包含environment.py..路径:

File "..\environment.py", line 8, in <module>


显然,您是从environment.py下的子目录而不是FitvTests所在的目录运行environment.py,在这种情况下,..语句中的import会简单地引用FitvTests目录而不是其父目录Fitv

您应该从environment.py目录运行FitvTests,或者如果有充分的理由从当前运行它的子目录中运行它,请使用...而不是向上2级的目录:

from ...BrowserPool import BrowserPool

关于python - 从一个目录导入文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56366346/

10-09 18:08
查看更多