除PyInstaller外,如何制作可直接运行的Python原生可执行脚本?
下面是几种实用的方法,覆盖不同场景和平台:
Shebang头 + 执行权限(Unix/Linux/macOS)
在Python脚本的第一行添加#!/usr/bin/env python3,然后用终端执行chmod +x your_script.py赋予执行权限,之后直接输入./your_script.py args就能运行。如果把脚本所在目录加到系统PATH里,甚至可以直接敲your_script.py args。
Windows下可以写一个.cmd包装脚本,比如your_script.cmd,内容写:@python "%~dp0your_script.py" %*,双击或者在终端输入your_script.cmd args即可运行。用setuptools/poetry配置entry points
这是Poetry这类工具自身实现命令行调用的核心方式。如果你的代码是一个Python包,在pyproject.toml(Poetry/PEP 621规范)里添加:[project.scripts] your_command = "your_package.module:main_function"或者用传统的
setup.py:from setuptools import setup setup( # 其他配置... entry_points={ 'console_scripts': [ 'your_command = your_package.module:main_function', ] } )执行
pip install .安装包后,系统里就会直接出现your_command命令,不管Windows还是Unix类系统都能直接调用,不需要加python前缀。PyOxidizer打包
PyOxidizer可以把Python解释器、你的脚本以及所有依赖打包成一个独立的原生可执行文件,生成的文件不需要系统预装Python。它会把代码嵌入到可执行文件里,运行时直接加载,支持多平台,适合需要分发独立程序的场景。Nuitka编译
Nuitka是把Python代码编译成C代码,再编译成原生可执行文件。它不仅能让脚本直接运行,还能提升运行速度,同时生成的文件也不需要依赖系统Python。使用起来也简单,安装后执行nuitka --standalone your_script.py就能生成可执行文件。Shiv打包
Shiv可以把脚本和依赖打包成一个单文件的可执行zip包,运行时会自动临时解压并执行。安装Shiv后,执行shiv -o your_script -e your_package.module:main .就能生成可执行文件,直接运行./your_script args即可,适合快速打包小型脚本。
内容的提问来源于stack exchange,提问作者Frederick

