[英]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.