1、对包使用-m
执行Python包的正确方法是使用-m并指定要运行的包名。
python -m spam
它在底层使用了runpy。要在你的项目中做到这点,只需要在包里指定一个__main__.py文件,它将被当成__main__执行。而且子模块可以像任何其它模块一样导入。
可以在包里写一个main子模块,然后将其__main__.py写成如下:
from . import main
if__name__ =="__main__":
main.main()
也可以直接将所有相关的代码放入__main__.py
2、目录
定义__main__.py也可以扩展到目录。
如图示例python news可执行,就是因为 news 目录有一个__main__.py文件。该目录就像一个文件路径被 Python 执行了如:python news/announce.py,但是可以避免以后更改文件名
![](https://img.haomeiwen.com/i25503794/6eef394068687949.png)
__main__.py文件非常简单
import runpy
# Change 'announce' to whatever module you want to run.
runpy.run_module('announce', run_name='__main__', alter_sys=True)
现在显然必须要处理依赖关系,但是如果你的脚本仅使用标准库或将依赖模块放在main.py同级目录,那么就足够了!
而且__main__.py 里不用导入 announce 模块,还是以它为主模块执行,也就不会破坏原来的依赖导入关系。
网友评论