Python包的入口设置依赖__init__.py、__main__.py和pyproject.toml:1. __init__.py使目录成为包,可定义导入内容;2. __main__.py支持python -m运行包;3. pyproject.toml配置scripts实现命令行工具。

Python 包的入口文件设置主要通过 __init__.py 和 __main__.py 两个特殊文件来实现,用途不同,下面分别说明。
1. __init__.py:定义包的导入行为
当你希望一个目录被识别为 Python 包时,需要在该目录下创建 __init__.py 文件(可以为空)。这个文件会在你导入该包时自动执行。
你可以在这个文件中:
- 定义包级别的变量、函数或类
- 导入子模块,方便用户从包直接访问
- 设置默认行为
例如目录结构:
立即学习“Python免费学习笔记(深入)”;
my_package/
__init__.py
module_a.py
在 __init__.py 中写入:
from .module_a import some_function
__version__ = "0.1.0"
这样用户就可以直接使用:
import my_package
my_package.some_function()
2. __main__.py:让包可直接运行
如果你想通过 python -m package_name 来运行整个包(比如做 CLI 工具或测试),就需要在包根目录下添加 __main__.py 文件。
Python 在执行 python -m my_package 时,会查找 my_package/__main__.py 并运行它。
示例:
第一步】:将安装包中所有的文件夹和文件用ftp工具以二进制方式上传至服务器空间;(如果您不知如何设置ftp工具的二进制方式,可以查看:(http://www.shopex.cn/support/qa/setup.help.717.html)【第二步】:在浏览器中输入 http://您的商店域名/install 进行安装界面进行安装即可。【第二步】:登录后台,工具箱里恢复数据管理后台是url/sho
my_package/
__init__.py
__main__.py
module_a.py
在 __main__.py 中写入:
from .module_a import main
if __name__ == "__main__":
main()
然后在终端运行:
python -m my_package
就会执行 __main__.py 的内容。
3. setup.py 或 pyproject.toml(用于安装和命令行入口)
如果你要把包发布或希望提供命令行工具(如输入 mycmd 直接运行),可以在 setup.py 或 pyproject.toml 中设置脚本入口点。
以 pyproject.toml 为例:
[project]
name = "my_package"
version = "0.1.0"
...
[project.scripts]
mycmd = "my_package.module_a:main"
安装后(pip install .),可以直接在命令行运行:
mycmd
这会调用 my_package/module_a.py 中的 main() 函数。
基本上就这些。根据你的需求选择:
- 想让目录变成包 → 用 __init__.py
- 想支持
python -m package→ 用 __main__.py - 想安装后有命令行命令 → 用 pyproject.toml 配置 scripts










