前提条件
安装 pyenv
pyenv
是 Python 版本管理工具,用来管理不同的 Python 版本。你需要先安装 pyenv
和 pyenv-virtualenv
。
安装 pyenv
:
# 安装 pyenv
curl https://pyenv.run | bash
安装 pyenv-virtualenv
:
pyenv install pyenv-virtualenv
步骤
1. 安装 Python 版本
使用 pyenv
安装合适的 Python 版本:
pyenv install 3.11.2 # 安装指定版本的 Python
pyenv global 3.11.2 # 设置为全局默认版本
你也可以创建一个虚拟环境:
pyenv virtualenv 3.11.2 myenv # 创建虚拟环境
pyenv activate myenv # 激活虚拟环境
安装 pex
工具
pex
用于打包 Python 项目为可执行文件。
pip install pex
然后安装依赖:
pip install -r requirements.txt
2. 创建 setup.py
文件(可选)
如果你的项目没有 setup.py
文件,建议手动创建一个。这个文件定义了模块和依赖。
# setup.py
from setuptools import setup
setup(
name="your_project_name", # 项目名称
version="0.1",
py_modules=["app"], # 你的主模块名称,确保 app.py 存在
install_requires=[ # 如果有外部依赖,列在此处
"flask",
"requests"
],
)
4. 编译为 PEX 文件
使用 pex
将你的项目打包为 PEX 文件。确保在项目根目录下运行命令:
pex . -m app -o rain1226.pex
.
:表示当前目录。-m app
:指定项目的主模块(例如app.py
)。-o rain1226.pex
:输出的 PEX 文件名称。
如果没有 setup.py
,可以禁用依赖安装:
pex . -m app -o rain1226.pex --no-pip --no-emit-warnings
5. 运行 PEX 文件
成功生成 PEX 文件后,可以使用以下命令运行:
./rain1226.pex # 直接运行 PEX 文件
如果你希望使用不同的 Python 版本,可以确保正确的环境被激活。
额外技巧
更改 PEX 版本:如果需要使用不同的 PEX 版本,可以指定:
pex . -m app -o rain1226.pex --python-shebang="/usr/bin/python3"
手动加载 .env 文件(通过 shell 脚本): 如果你不想在代码中加载 .env,可以通过 shell 脚本加载 .env 文件:
#!/bin/bash
# 加载 .env 文件
export $(cat .env | xargs)
# 日志文件名
LOGFILE="output.log"
# 运行 .pex 文件并将日志保存到当前目录
./my_project.pex >> "$LOGFILE" 2>&1
# 输出日志文件路径
echo "日志已保存到 $LOGFILE"
这样在运行 .pex 文件之前,export 会将 .env 文件中的环境变量加载到当前 shell 环境。
总结
- 使用
pyenv
安装和管理 Python 版本。 - 使用
pex
将 Python 项目打包成 PEX 文件。 - 确保项目结构正确,必要时创建
setup.py
文件。 - 通过
--no-pip
等选项来定制构建过程。 - 调试时使用
-v
参数查看详细日志。
通过这些步骤,你就可以顺利将 Python 项目编译为一个独立的 PEX 文件,方便部署和运行。