conda 转为 venv
从 Conda 迁移到 venv 并使用 PyInstaller 打包的核心流程
1. 从已有环境导出依赖列表
在需要“复制”环境的源项目(如 eeg-hand)中,激活其环境(Conda 或 venv 均可),执行以下命令,将当前环境的所有 Python 包及版本导出到 requirements.txt 文件:
1
pip freeze > requirements.txt
该文件会记录项目运行所需的所有依赖(如 bleak、winrt、pyinstaller 等)。
2. 为目标项目创建 venv 环境
进入目标项目(如 eeg-typing)的根目录,执行以下命令,创建一个新的 venv 环境(环境名称可自定义,这里以 venv_project 为例):
1
python -m venv venv_project
执行后,项目根目录会生成一个名为 venv_project 的文件夹,其中包含独立的 Python 解释器和依赖存储目录。
3. 激活 venv 环境
激活命令因操作系统而异:
- Windows(CMD 终端):
venv_project\Scripts\activate.bat - Windows(PowerShell 终端):
1
.\venv_project\Scripts\Activate.ps1
若提示执行策略问题,先执行
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser并按提示输入Y,再重新激活。 - Linux/macOS:
1
source venv_project/bin/activate激活成功后,终端前缀会显示
(venv_project),表示当前处于新环境中。
4. 安装项目依赖
将步骤 1 中生成的 requirements.txt 复制到目标项目根目录,执行以下命令,安装所有依赖:
1
2
3
4
5
## 先升级 pip 到最新版本,避免安装过程中出现问题
python -m pip install --upgrade pip
## 通过 requirements.txt 安装所有依赖
pip install -r requirements.txt
这一步会确保目标项目的 venv 环境与源项目有完全一致的依赖包及版本。
5. 使用 PyInstaller 打包项目
在激活的 venv 环境中,执行 PyInstaller 打包命令。以常见的单文件、带控制台、指定名称的打包为例:
1
pyinstaller -F -c app.py --name "项目名称"
-F:表示生成单个独立的可执行文件,方便分发。-c:表示显示控制台窗口,便于查看程序运行时的输出和报错信息(若为 GUI 程序,后续可改为-w隐藏控制台)。--name "项目名称":用于指定生成的可执行文件的名称。
打包完成后,可执行文件会生成在 dist 文件夹中,直接运行该文件即可测试项目功能。
6. 若有一些资源文件(如图片)
6.1 在代码中添加资源路径处理函数(解决图片加载问题)
在项目代码(如 app.py 或工具类文件)中添加:
1
2
3
4
5
6
7
8
9
10
11
12
import sys
import os
def get_resource_path(relative_path):
"""获取资源文件路径(兼容开发和打包环境)"""
if getattr(sys, 'frozen', False):
## 打包后环境:资源在临时目录 _MEIPASS 中
base_path = sys._MEIPASS
else:
## 开发环境:资源在当前脚本所在目录
base_path = os.path.dirname(os.path.abspath(__file__))
return os.path.join(base_path, relative_path)
6.2 使用资源路径函数加载图片
修改代码中加载图片的逻辑:
1
2
3
4
5
6
## 示例:加载 res 文件夹下的图片
image_path = get_resource_path("res/右手张开.png")
## 后续用 image_path 加载图片(以 PyQt 为例)
from PyQt5.QtGui import QPixmap
pixmap = QPixmap(image_path)
6.3 执行 pyinstaller 打包命令(包含资源文件)
1
pyinstaller -F -c app.py --name "气动手控制系统" --add-data "res/*;res"
--add-data "res/*;res":将项目根目录的res文件夹(含所有图片)打包到程序中,保持res文件夹结构。
7.4 测试打包结果
删除旧的 dist 和 build 文件夹,重新打包后,进入 dist 目录运行 气动手控制系统.exe,验证功能和图片加载是否正常。