从一个目录导入文件

时间:2019-05-29 18:11:07

标签: python python-3.x module directory python-import

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

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'

我在做错什么以及如何解决?

1 个答案:

答案 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