【发布时间】:2021-08-16 14:36:27
【问题描述】:
我正在尝试构建一个 Python 包。为简化起见,我将仅提及与问题相关的部分:
包(目录)名为moranpycess,里面有三个相关文件:
- 整个包的initfile
__init__.py:
from .Individual import Individual
from .MoranProcess import MoranProcess
-
一个名为
Individual的模块,其中包含一个类Individual。 -
一个名为
MoranProcess的模块包含一个类MoranProcess。在顶部,它使用:import Individual导入前一个模块。
我用python -m pip install .安装包
然后我运行一个测试,看包是否可以正常导入:python -c 'import moranpycess'.
我明白了:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/runner/work/angry-moran-simulator/angry-moran-simulator/moranpycess/__init__.py", line 18, in <module>
from .MoranProcess import MoranProcess
File "/home/runner/work/angry-moran-simulator/angry-moran-simulator/moranpycess/MoranProcess.py", line 22, in <module>
import Individual
ModuleNotFoundError: No module named 'Individual'
Error: Process completed with exit code 1.
这对我来说很奇怪,因为 Python 解释器似乎可以找到包,包导入相应的类,但解释器也尝试执行顶级模块导入并且(我不知道为什么)它确实找不到模块...
我在这里做错了吗?
编辑:
目录结构:
└── moranpycess
├── Individual.py
├── MoranProcess.py
└── __init__.py
更新
我正在考虑这里提出的解决方案:
https://stackoverflow.com/a/49375740/2340598
但是我不知道这是否是组织包的“正确”方式......
【问题讨论】:
-
尝试删除值前的
.。 -
也许您应该使用带点
import .Individual或from . import Individual的相对导入。或者也许你应该再次使用from .Individual import Individual -
@furas: (1) 是 SyntaxError,(2) 和 (3) 产生另一个问题
ImportError: attempted relative import with no known parent package -
您应该显示文件夹和文件的结构 - 这样我们就可以重现这种情况并对其进行测试。
-
@furas:添加了显式目录
tree
标签: python python-module python-packaging