【发布时间】:2019-01-22 18:24:43
【问题描述】:
我的目录结构如下:
我在util/misc.py 中有一些实用函数,我想将它们导入compose_dataset.py。但是,我无法让 import 语句起作用。
我正在使用 Windows Python3.5.4,所以根据我的阅读,我不再需要 __init__.py 文件。项目文件夹是我的PYTHONPATH 的子文件夹,它仅指向 E:\Python。到目前为止,我尝试过:
from misc import *
from util import *
from util.misc import *
from ..util.misc import *
并收到ImportError: No module named 'xyz' 或ImportError: attempted relative import with no known parent package。我也尝试添加初始化文件,但我没有这些经验,只是在每个目录中添加了一个,但(令人惊讶的是)这也不起作用。
我在这里错过了什么??
【问题讨论】:
-
您需要将
src文件夹放在工作目录中的PYTHONPATH上,否则from src.util.misc import *应该可以工作。 -
你试过
util文件夹中的__init__.py吗? -
PYTHONPATH现在是 "E:\Python, "E:\Python\Project\src"" 我仍然得到No module named 'src'。另外,将每个项目文件夹的 src 文件夹添加到路径变量真的是一个很好的长期解决方案吗? -
@bhnn 如果将
src添加到PYTHONPATH,则不需要将其包含在导入中:from util.misc import * -
@PeterWood 我试过了,但没用。如果我只是将
src添加到PYTHONPATH,我的sys.path变量稍后会在运行时包含/src和/src/data,但不包含/src/util。这一直是造成问题的原因。如果我像下面评论的那样手动添加它,它工作正常,但 linter 仍然显示错误,因为更正显然只发生在运行时。你知道什么会导致这种奇怪的行为吗?
标签: python python-3.x python-import