[英]how to organize a python module that scripts can be run as __main__ program?
我正在用python启动一个项目,现在的代码结构如下:
project/
__init__.py
a.py
b.py
mainA.py
utilities/
__init__.py
mainB.py
c.py
__init__
文件全部为空。
我想将utilities/mainB.py
作为程序运行(使用类似python main.py
类的东西),并且mainB需要导入a.py
和b.py
所以我尝试了from .. import a
和其他方法,但是import
失败。 错误信息是:
ValueError:尝试非包中的相对导入
因此,出现了以下问题:
mainB.py
,使其可以作为主程序运行? mainA.py
现在可以作为主程序运行,它也可以导入a.py
和b.py
(使用import a
和import b
)。 我认为代码结构可能会变得更加复杂。 说,如果mainA.py
必须从project/some/directory
导入模块,我该怎么做? 您可以使用Python的内置模块运行功能( python -m <module>
)。
python -m project.utilities.mainB
这使您可以将mainB作为包的一部分正常编写,因此相对导入和绝对导入都可以正常工作。
有关此功能的深入讨论,请参阅PEP-338 。
您应该在PYTHON_PATH中添加“ project”目录,然后在mainB.py中添加:
from project import a
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.