python Package如何设置文件入口

尊渡假赌尊渡假赌尊渡假赌
发布: 2025-11-17 09:49:02
原创
774人浏览过
Python包的入口设置依赖__init__.py、__main__.py和pyproject.toml:1. __init__.py使目录成为包,可定义导入内容;2. __main__.py支持python -m运行包;3. pyproject.toml配置scripts实现命令行工具。

python package如何设置文件入口

Python 包的入口文件设置主要通过 __init__.py__main__.py 两个特殊文件来实现,用途不同,下面分别说明。

1. __init__.py:定义包的导入行为

当你希望一个目录被识别为 Python 包时,需要在该目录下创建 __init__.py 文件(可以为空)。这个文件会在你导入该包时自动执行。

你可以在这个文件中:

  • 定义包级别的变量、函数或类
  • 导入子模块,方便用户从包直接访问
  • 设置默认行为

例如目录结构:

立即学习Python免费学习笔记(深入)”;

my_package/<br>    __init__.py<br>    module_a.py
登录后复制

__init__.py 中写入:

from .module_a import some_function<br><br>__version__ = "0.1.0"
登录后复制

这样用户就可以直接使用:

import my_package<br>my_package.some_function()
登录后复制

2. __main__.py:让包可直接运行

如果你想通过 python -m package_name 来运行整个包(比如做 CLI 工具或测试),就需要在包根目录下添加 __main__.py 文件。

Python 在执行 python -m my_package 时,会查找 my_package/__main__.py 并运行它。

示例:

Text-To-Pokemon口袋妖怪
Text-To-Pokemon口袋妖怪

输入文本生成自己的Pokemon,还有各种选项来定制自己的口袋妖怪

Text-To-Pokemon口袋妖怪 48
查看详情 Text-To-Pokemon口袋妖怪
my_package/<br>    __init__.py<br>    __main__.py<br>    module_a.py
登录后复制

__main__.py 中写入:

from .module_a import main<br><br>if __name__ == "__main__":<br>    main()
登录后复制

然后在终端运行:

python -m my_package
登录后复制

就会执行 __main__.py 的内容。

3. setup.py 或 pyproject.toml(用于安装和命令行入口)

如果你要把包发布或希望提供命令行工具(如输入 mycmd 直接运行),可以在 setup.pypyproject.toml 中设置脚本入口点。

pyproject.toml 为例:

[project]<br>name = "my_package"<br>version = "0.1.0"<br>...
登录后复制
[project.scripts]<br>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

以上就是python Package如何设置文件入口的详细内容,更多请关注php中文网其它相关文章!

相关标签:
python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号