使用虚拟环境编译,运行Python源代码
在使用Python项目时,一般会依赖很多外部的软件或者安装包。但是直接使用Python安装会污染系统安装的软件, 这时就需要虚拟环境来运行Python以隔绝对系统的污染以达到安全运行的目的。
虚拟环境的使用
- 创建并进入虚拟环境
# 创建并进入虚拟环境
python3 -m venv venv
source venv/bin/activate- 可在venv虚拟环境中执行依赖安装,例如:
# 例如:在虚拟环境中编译yt-dlp
# 更新工具包
python -m pip install --upgrade pip setuptools wheel
# 安装依赖
python3 devscripts/install_deps.py --include pyinstaller
# 构建
python3 devscripts/make_lazy_extractors.py
python3 -m bundle.pyinstaller- 退出虚拟环境
# 退出虚拟环境
deactivate下列是一个yt-dlp在虚拟环境中编译的一个脚本示例
build-yt-dlp.sh
#!/usr/bin/env bash
set -euo pipefail
echo "🚀 开始构建 yt-dlp(完全隔离的虚拟环境)"
echo "----------------------------------------"
# # === [1] 克隆最新源码 ===
# if [ ! -d "yt-dlp" ]; then
# echo "🔽 克隆 yt-dlp 源码..."
# git clone https://github.com/yt-dlp/yt-dlp.git
# else
# echo "♻️ 更新 yt-dlp 源码..."
# cd yt-dlp
# git fetch origin
# git pull
# cd ..
# fi
# cd yt-dlp
# # 可选:切换到稳定 tag(建议与官方 Release 一致)
# # git checkout 2025.10.07
# === [2] 创建虚拟环境 ===
if [ -d "venv" ]; then
echo "⚠️ 已存在 venv 环境,删除旧的..."
rm -rf venv
fi
echo "🧱 创建新的 Python 虚拟环境..."
python3 -m venv venv
source venv/bin/activate
# === [3] 升级基础工具 ===
echo "⬆️ 升级 pip、setuptools、wheel..."
python -m pip install --upgrade pip setuptools wheel
# === [4] 安装构建依赖 ===
echo "📦 安装官方构建依赖(包括 pyinstaller)..."
python devscripts/install_deps.py --include pyinstaller
# === [5] 生成懒加载提取器 ===
echo "🧩 生成 lazy extractors..."
python devscripts/make_lazy_extractors.py
# === [6] 打包 ===
echo "🏗️ 使用官方 PyInstaller 脚本打包..."
python -m bundle.pyinstaller
# # 构建 arm64
# arch -arm64 python -m bundle.pyinstaller
# === [7] 输出结果 ===
echo "✅ 构建完成!"
echo "👉 可执行文件路径: $(pwd)/dist/"
ls -lh dist/
# echo "👉 可执行文件路径: $(pwd)/dist/yt-dlp"
# file dist/yt-dlp_macos
# echo "🧹 清理临时文件(可选)"
# === [8] 退出虚拟环境 ===
deactivate
echo "✅✅✅ 构建完成!✅✅✅"