Skip to content

使用虚拟环境编译,运行Python源代码

在使用Python项目时,一般会依赖很多外部的软件或者安装包。但是直接使用Python安装会污染系统安装的软件, 这时就需要虚拟环境来运行Python以隔绝对系统的污染以达到安全运行的目的。

虚拟环境的使用

  1. 创建并进入虚拟环境
# 创建并进入虚拟环境
python3 -m venv venv
source venv/bin/activate
  1. 可在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
  1. 退出虚拟环境
# 退出虚拟环境
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 "✅✅✅ 构建完成!✅✅✅"