【问题标题】:Cannot find module when importing from project in python从python中的项目导入时找不到模块
【发布时间】: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


【解决方案1】:

试试这个:

import sys
sys.path.insert(0, '../')
from util.misc import *

您可能还想看看这篇文章:How to access a module from outside your file folder in Python?

【讨论】:

  • PYTHONPATHnow 包含'../', 路径,但导入语句仍然无法识别util
  • 您是否将__init__.py 添加到您的子文件夹中?这样,Python 将您的文件夹视为模块。一个空的__init__.py 就可以了。
  • 是的,现在根目录和每个子目录都有一个init文件。还是一样的 ImportError。
  • 您可以试试sys.path.append 而不是insert,就像我在答案中提供的链接一样吗?
  • 嗯,由于某种原因,/src/src/data 似乎自动包含在 PYTHONPATH 中,只是将 /src 的绝对路径放入其中。但它缺少指向/src/util 的链接。使用sys.path.append(os.path.abspath(os.path.join('./src', 'util'))) 修复它。奇怪的是,它会自动识别另一个子文件夹,但不是这个......
【解决方案2】:

将您的PYTHONPATH 设置为.,并将__init__.py 文件添加到您要从中导入的每个目录中,在您的情况下将其添加到srcdatautil 目录中。假设您从项目的根目录(与您的 README.md 文件所在的位置相同)运行“入口点”脚本,请使用以下代码导入:

# compose_dataset.py file
from src.util.misc import function_name

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    相关资源
    最近更新 更多