【问题标题】:The imports in my python project don't work and I didn't manage to find why我的 python 项目中的导入不起作用,我没有找到原因
【发布时间】:2021-04-03 17:29:43
【问题描述】:

所以这是我的问题。 我有一个关于 Python 的个人项目,我通常在 PyCharm 上运行,然后我更喜欢切换到 VSCode。但是现在,我在文件导入上遇到了我不理解的错误。我不记得有修改过导入的某些内容,我不知道这是否与 IDE 有关,或者是否是一个全球性问题。

所以基本上在我的项目文件的根目录中,我有一个“utils.py”文件,用于存储我认为需要在我的项目中经常使用的函数。在同一位置(项目根目录),有我启动的主 .py 文件。

我将 utils.py 文件的路径添加到我的 PYTHONPATH 环境变量中,当我在 Python IDLE 上的变量 sys.path 中搜索时,它确实显示了我的项目根路径。

我的 main.py 也设法正确地获得了该导入。

但是,在项目根目录中,我有一个包含 Python 子文件的文件夹,无法访问该文件。 就像,根目录有 main.py、utils.py 和 folder/subfile.py

在 main.py 和 subfile.py 上,我添加了“from utils import *”以添加可识别的 utils 导入 在 main.py 上,该行没有显示任何错误 在 subfile.py(文件夹中)上,该行出现错误“无法导入 'utils' pylint(import-error)”

TLDR:

  • 我的项目根文件夹包含 utils.py、main.py、folder/subfile.py
  • utils.py 在我的 PYTHONPATH 环境变量中
  • utils.py 导入适用于 main.py
  • utils.py 导入对子文件夹中的 subfile.py 不起作用
  • (不知道是不是IDE的原因)

【问题讨论】:

  • 也许您可以尝试将utils.py 制作成一个完整的模块,以便将来可以导入到subfile.py 和其他模块中。不是真正的解决方案,但希望它有所帮助。
  • 不是已经算是模块了吗?
  • 是的,对不起,你是对的。我的意思是 utils.py 本身就是一个包。
  • 你的意思是把它添加到站点包上,比如我用 pip 安装的包?
  • 不,不是外部包。只需创建一个名为utils 的文件夹。然后将您的utils.py 文件放在新文件夹中,并创建一个空的__init__.py 文件。见docs.python.org/3/reference/import.html#packages

标签: python import


【解决方案1】:

如果我正确理解这一点,subfile.py 脚本位于另一个目录中,因此您无法像在main.py 中那样导入,您需要执行类似于this 的操作,回答如下

from ..utils import *

【讨论】:

  • 如果我这样做,我会在导入行收到一个新错误,即“尝试相对导入超出顶级包”
猜你喜欢
  • 2016-11-04
  • 1970-01-01
  • 2012-11-06
  • 2021-10-02
  • 2012-03-06
  • 1970-01-01
  • 1970-01-01
  • 2022-11-24
  • 1970-01-01
相关资源
最近更新 更多