目录


什么是 Python Embeddable Package?

Python Embeddable Package 是 Python 官方提供的轻量级嵌入式发行版,专为以下目标设计:

特性 说明
体积精简 仅包含 Python 核心运行文件
免安装 解压即用,无需安装程序
便携性强 可放在 U 盘或任意目录
独立运行 不依赖系统已有的 Python

⚠️ 重要限制:默认情况下,embeddable package 禁用第三方库支持,这就是为什么很多人下载后无法使用 pip 的原因。

适用场景

Python Embeddable Package 特别适合:

  1. 独立工具分发 - 打包 Python 脚本为单文件应用
  2. 游戏 mod 开发 - 如 Minecraft Python 插件
  3. 嵌入式设备 - 受限环境的 Python 运行
  4. 便携开发环境 - U 盘携带 Python 环境
  5. 自动化脚本部署 - 快速部署 Python 工具

下载地址

访问 Python 官方下载页面:

https://www.python.org/downloads/windows/

向下滚动找到 “Embeddable package” 部分,下载对应版本的压缩包:

  • 文件命名格式:python-{version}-embed-amd64.zip
  • 推荐版本:Python 3.11+ 或 3.12+(稳定性好)

快速配置

步骤 1:解压文件

# 创建目录并解压
mkdir C:\PythonTools
Expand-Archive python-3.13.1-embed-amd64.zip C:\PythonTools\

目录结构如下:

C:\PythonTools\
└── python-3.13.1-embed-amd64\
    ├── python313._pth    # ⭐ 关键配置文件
    ├── python313.dll     # Python 核心 DLL
    ├── python.exe        # Python 解释器
    ├── pythonw.exe       # GUI 模式解释器
    ├── vcruntime140.dll  # Visual C++ 运行时
    └── ...

步骤 2:修改 ._pth 文件(⭐ 核心操作)

这是最关键的一步!不完成此步骤,pip 将无法正常工作。

找到 python313._pth 文件(文件名中的数字对应 Python 版本),用文本编辑器打开:

修改前

python313.zip
.
#import site

修改后

python313.zip
.
import site

💡 为什么要启用 import site 因为 site 模块负责将 site-packages 目录添加到 sys.path,默认禁用是为了保持最小化。

步骤 3:安装 pip

# 下载 get-pip.py
cd C:\PythonTools\python-3.13.1-embed-amd64\
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

# 运行安装脚本
python.exe get-pip.py

# 验证安装
python.exe -m pip --version

安装成功后,目录结构变为:

python-3.13.1-embed-amd64\
├── python313._pth           # 已修改
├── python.exe
├── Scripts\                  # pip 命令目录
│   ├── pip.exe
│   ├── pip3.exe
│   └── ...
├── Lib\site-packages\       # 第三方库安装位置
│   ├── pip\
│   └── ...
└── get-pip.py               # 可删除

安装第三方库

基础操作

# 安装单个包
python.exe -m pip install requests

# 安装多个包
python.exe -m pip install numpy pandas matplotlib

# 指定版本安装
python.exe -m pip install flask==3.0.0

# 从 requirements.txt 安装
python.exe -m pip install -r requirements.txt

一键配置脚本

如果你觉得手动配置太麻烦,可以使用一键配置脚本。将以下内容保存为 setup-python.bat,放在 Python 目录下,双击运行即可自动完成配置:

@echo off
echo ========================================
echo   Python Embeddable 快速配置脚本
echo ========================================

cd /d "%~dp0"

REM 检查 ._pth 文件
findstr /C:"import site" python313._pth >nul 2>&1
if %errorlevel% neq 0 (
    echo [1/3] 修改 python313._pth 文件...
    powershell -Command "(Get-Content python313._pth) -replace '#import site', 'import site' | Set-Content python313._pth"
)

REM 安装 pip
if not exist "Scripts\pip.exe" (
    echo [2/3] 安装 pip...
    curl -s https://bootstrap.pypa.io/get-pip.py -o get-pip.py
    python.exe get-pip.py
    del get-pip.py
)

echo [3/3] 验证安装...
python.exe -m pip --version

echo.
echo ========================================
echo   配置完成!输入 python.exe -m pip install 开始使用
echo ========================================
pause

常见问题

Q1: pip 安装失败,提示 ModuleNotFoundError: No module named 'site'

原因:未正确修改 python313._pth 文件

解决

  1. 确认 .pth 文件中 import site 前没有 # 符号
  2. 确保修改后保存了文件

Q2: pip 命令不可用

原因:Scripts 目录未添加到 PATH 环境变量,或 pip 未安装成功

解决

# 方法 1:使用完整路径
.\Scripts\pip.exe install <package>

# 方法 2:使用 python -m pip
python.exe -m pip install <package>

Q3: 第三方库安装后无法导入

解决:先确认库是否安装到了正确的位置

python.exe -c "import site; print(site.getsitepackages())"

Q4: 升级 pip 失败

python.exe -m pip install --upgrade pip

Q5: 导入本地程序包失败

原因:嵌入式 Python 中,当前目录默认不在 sys.path 中,导致无法直接 import 项目中的模块。

解决:在入口文件(如 main.py)开头添加以下代码:

import sys
import os

# 获取当前脚本所在目录
current_dir = os.path.dirname(os.path.abspath(__file__))

# 兼容某些 Embed 环境(__file__ 可能不可用)
if not current_dir:
    current_dir = os.getcwd()

# 添加到模块搜索路径
if current_dir not in sys.path:
    sys.path.insert(0, current_dir)

# 现在可以正常 import 本地模块了
from src import my_module

这样可以将项目根目录添加到 Python 的模块搜索路径中,从而正确导入本地的程序包。

Q6: 如何查看 Python 版本和模块搜索路径?

python.exe --version
python.exe -c "import sys; print('\n'.join(sys.path))"

Q7: DLL 加载失败或闪退

原因:缺少 Visual C++ 运行库

解决:下载安装 Microsoft Visual C++ Redistributable

实战:创建独立工具

项目结构

my-tool/
├── python-3.13.1-embed-amd64/   # Python 环境
├── src/
│   ├── __init__.py
│   ├── main.py                  # 入口文件
│   └── utils.py                 # 工具模块
├── requirements.txt
└── run.bat                      # 启动脚本

run.bat 启动脚本

@echo off
cd /d "%~dp0"

REM 设置 Python 路径
set PYTHON_HOME=%~dp0python-3.13.1-embed-amd64
set PATH=%PYTHON_HOME%;%PYTHON_HOME%\Scripts;%PATH%

REM 运行程序
python.exe src\main.py %*

pause

打包分发

# 1. 安装依赖到本地目录
python.exe -m pip install -r requirements.txt --target .\python-3.13.1-embed-amd64\Lib\site-packages\

# 2. 压缩整个项目
# - 包含 Python 环境(已含依赖)
# - 包含启动脚本
# - 排除不必要的文件(如 __pycache__)

# 3. 分发给用户
# 用户解压后双击 run.bat 即可运行

高级配置

自定义 site-packages 路径

修改 .pth 文件:

python313.zip
.
import site

# 添加自定义路径
C:\MyPackages
D:\SharedLibs

禁用 .pth 文件扫描

python313.zip
.
#import site
import site as site

设置默认编码

python313.zip
.
import site
utf-8

配置 PYTHONHOME 和 PYTHONPATH

set PYTHONHOME=C:\PythonTools\python-3.13.1-embed-amd64
set PYTHONPATH=C:\MyProjects

最佳实践

1. 版本选择

用途 推荐版本 说明
通用工具 Python 3.11.x 稳定性和兼容性最好
最新特性 Python 3.13.x 最新版本,功能最多
旧系统 Python 3.8.x 支持 Windows 7

2. 目录组织

tools/
├── python-3.11.9-embed/
│   ├── python311._pth
│   ├── python.exe
│   └── ...
├── project-a/
│   ├── src/
│   ├── venv/              # 隔离的虚拟环境
│   └── run.bat
└── project-b/
    └── ...

3. 虚拟环境隔离

# 创建虚拟环境
cd project-a
..\python-3.13.1-embed-amd64\python.exe -m venv venv

# 激活
venv\Scripts\activate

# 安装依赖
python.exe -m pip install -r requirements.txt

# 运行
python src/main.py

4. 调试技巧

# 在入口文件添加以下代码进行调试
import sys
import os

# 打印关键路径
print(f"Python: {sys.executable}")
print(f"Version: {sys.version}")
print(f"Path:\n" + "\n".join(f"  {p}" for p in sys.path))

总结

使用 Python Embeddable Package 的核心要点:

步骤 操作 重要性
1 下载并解压 embeddable 包
2 修改 python313._pth,启用 import site ⭐⭐⭐
3 运行 get-pip.py 安装 pip ⭐⭐
4 使用 python.exe -m pip 安装第三方库 ⭐⭐

💡 记住:修改 ._pth 文件是一切的基石,没有它 pip 无法工作!

通过以上配置,你可以在任何 Windows 环境下快速部署一个功能完整的 Python 环境,轻松实现独立工具分发、便携开发等多种需求。


如有问题,欢迎在评论区留言讨论!