Python 脚本入口

Windows 下的 Python 安装第三方库时会在解释器同目录下的子目录 Scripts 里 安装很多 100 KB 左右的 exe 文件,执行这些文件可以执行第三方库的某些功能。 最常见的就是 pip.exe ,可能存在几个同名文件 pip3.exe pip3.8.exe 等。

这不禁让人发问:

  • 这个小小的仅有 100 KB 的文件就能包含第三方库的所有功能吗?
  • 为什么移动 Python 后 pip 失效了?
  • 这些 exe 是怎么生成的?
  • 为什么都是 100 KB ,它们之间有什么区别?
  • ……

带着这些疑问,我遍寻中文互联网网络,结果果然没让我失望, 几乎千篇一律的抄袭文章,而且全部都是指向一个主题: 教你使用 XXX 将 Python 脚本打包成 exe 。

耐着性子翻捡破烂,不断修改关键词,终于以 Python Scripts exe 找到一篇知乎文章 Python安装目录下Scripts/里的exe文件 ,这篇文章讲到了 setuptools 的 setup.py 文件, 其中的 setup 函数有一个参数 entry_points 是生成 exe 的关键

1
2
3
4
5
6
7
8
9
setup(
    ...,
    entry_points={
        'console_scripts': [
            'xxx = m.s:f', # 示例
        ],
    },
    ...
)

搜索关键词 Python entry_points 打开了新世界,最终一直找到官方文档以及 pyproject.toml 支持, 详细内容参考链接:

  1. https://zhuanlan.zhihu.com/p/503252479
  2. https://packaging.python.org/en/latest/specifications/entry-points/#use-for-scripts
  3. https://python-poetry.org/docs/pyproject/#scripts
  4. https://packaging.python.org/en/latest/guides/writing-pyproject-toml/#a-full-example

补充

关于移动 Python 后 pip 失效的问题,如果看完以上资料就明白失效的原因了: pip.exe 内置了 Python 解释器的绝对路径。解决办法就是重新安装 pip 或者更正 pip.exe 内绝对路径,如果是虚拟环境可以选择重建。

更正 pip.exe 内置路径可以参考 anemele/repair-venv

Built with Hugo
Theme Stack designed by Jimmy