【问题标题】:Python module not recognizing files in the same folderPython模块无法识别同一文件夹中的文件
【发布时间】:2018-01-26 10:02:04
【问题描述】:

我已经(至少尝试过)使用setuptools 制作了一个包,并尝试从另一个 python 文件中使用它。但是,包中的模块似乎无法相互识别。

pkg
|-- pkg
|     |-- __init__.py
|     \-- module.py
\-- setup.py

__init__.py:

import module
#code

pyfile.py

import pkg
#code

当我尝试运行 pyfile.py 时,我得到了

Traceback (most recent call last):
  File "/.../py/pyfile.py", line 1, in <module>
    import pkg
  File "/.../pkg/pkg/__init__.py", line 1, in <module>
    import module
  ModuleNotFoundError: No module named 'module'

如果我写import pkg.module 效果很好,但我不明白为什么 self.referential 代码会实用。

【问题讨论】:

    标签: python-3.x setuptools python-module


    【解决方案1】:

    __init__ 中的导入更改为

    from . import module
    

    您可以在 python 文档中阅读更多关于 intra-package references 的信息。

    (顺便说一句,据我所知,setuptools 不涉及此处。)

    【讨论】:

    • 这很奇怪。我希望import module 查看它的文件夹。
    • 我认为这是 python 2.7 和 python 3.5 之间的区别(在 python 2.7 中你可以只使用 import module ...)
    • 是的,你是对的。 python 2.7 手册说:“子模块经常需要相互引用。[...] 事实上,这种引用非常普遍,以至于 import 语句首先在包含包中查找,然后再查找标准模块搜索路径。” Python 3.5 不在同一个包中。但是,上述解决方案适用于 Python 2 和 Python 3。
    猜你喜欢
    • 2021-12-10
    • 2020-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 2021-07-01
    相关资源
    最近更新 更多