从上一个目录导入文件

2024-04-25 22:59:42 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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'

我做错了什么?我该如何修复它


Tags: pathnoinfrompyimportenvironmentos
1条回答
网友
1楼 · 发布于 2024-04-25 22:59:42

Python中的导入总是相对于Python解释器运行的路径,以及trackback中显示的包含..environment.py路径:

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

很明显,您是从FitvTests下的子目录运行environment.py,而不是从environment.py所在的同一目录运行,在这种情况下,import语句中的..只会引用FitvTests目录,而不是它的父目录Fitv

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

from ...BrowserPool import BrowserPool

相关问题 更多 >