Python 3.7
中的以下结构不允许我在模块B
中导入类A
:
Test:
test:
__init__.py
a:
__init__.py
a.py
b:
__init__.py
b.py
顶层__init__
为空。以下是剩余的文件:
a
#__init__.py
from .a import A
#a.py
class A:
def __init__(self,
*args,
**kwargs):
'''
'''
pass
b:
#__init__.py
from .b import B
#a.py
from test.a import A
class B:
def __init__(self,
*args,
**kwargs):
'''
'''
pass
在Windows上,如果我尝试运行b.py
,而不执行任何其他操作,则会出现以下错误:
ModuleNotFoundError: No module named 'test.a'
有人能解释一下我为什么会犯这个错误吗?我也看到过一些类似的帖子,但它们并没有解决我的问题:
setuptools
是从项目创建包所必需的。发展的最佳做法是:pipenv
)__init__.py
的文件夹都成为一个包李>setup.py
(使用setuptools
)pipenv install -e .
以安装**注意:这个
-e
代表“可编辑”。开发时,它会在代码的python安装中放置一个链接(*.pth
文件),以便安装包,但任何更改都会立即生效(请参见Python Packaging Tutorial)。这样,您的所有测试代码、客户机代码等都可以以通常的方式导入您的包对于上述示例,目录修改为以下内容:
setup.py
如下所示:要运行的完整命令行指令如下:
如果随后从虚拟环境中运行python,则可以导入包结构:
相关问题 更多 >
编程相关推荐