是否有在一系列 python 文件中运行主文件的标准?
Posted
技术标签:
【中文标题】是否有在一系列 python 文件中运行主文件的标准?【英文标题】:Is there a standard for running a main file in a series of python files? 【发布时间】:2017-05-07 14:45:10 【问题描述】:我有一个目录我想分发给同事,其中包含以下文件:
__init__.py
common.py
file_downloader.py
builder.py
repo_setup.py
现在,我设置为主要功能的文件是 repo_setup.py,因为它有我正在寻找的 def main():
。
我通常会运行该文件,一切正常。虽然运行该文件不是很直观,但很好奇主文件启动所有内容的标准是什么
我正在考虑创建一个 main.py 来启动所有内容,并且似乎还有一个自述文件。
是否有用于开发包含多个文件的项目并通过电子邮件或 U 盘分发的 Python 标准?
我觉得不需要利用 setup.py,因为它不需要任何其他包来运行。也许这实际上是最好的行动方案。我的第一眼看不到任何运行属性,它接受可执行列表以在设置复杂后按顺序运行。也许执行 setup.py 会在安装完所有包后按顺序运行 python 文件列表?
【问题讨论】:
不太清楚你想要完成什么。调用其他文件的文件?这不就是进口的目的吗? Understanding the main method of python的可能重复 我了解主要方法的用途,但我试图创建一个易于使用的文件结构。这样用户将获得我的目录,他们只运行一个特定的文件。我想尝试遵循 Python 标准。通常我只需单击并运行一个文件并利用__name__
,但我不确定是否有运行应用程序的标准,给定文件列表
【参考方案1】:
您可以使用 idlelib 为 IDLE 完成部分工作。呼叫目录project
。添加project.__main__
与
from project.repo_setup import main
main()
将project
目录(及其 .py 文件)放入(解压缩).../lib/site-packages
。这会将project
放在sys.path
上,使其既可导入又可运行(作为主模块)。使用python -m project
从命令行运行。 (或 python3 取决于版本和操作系统。)
【讨论】:
所以你是说,创建一个与目录同名的文件,然后从repo_setup中导入main,然后运行? 不完全。添加一个名为__main__.py
的文件in项目目录,无论你怎么称呼它。例如,查看 lib/idlelib 的文件列表。选项-m
表示“将此(可导入)文件作为主模块运行”。就像导入目录实际上会导入目录/__init__.py 一样,运行目录实际上会运行 main.py。换句话说,python -m import.name
等价于python somepath/import/name.py
,只是-m
让用户知道somepath
,这取决于特定的安装。以上是关于是否有在一系列 python 文件中运行主文件的标准?的主要内容,如果未能解决你的问题,请参考以下文章