虚拟环境篇(建议)
在项目文件夹中打开终端
创建虚拟环境
python3 -m venv venv_name
venv_name即为虚拟环境名称,建议英文
激活虚拟环境
Windows:
venv_name\Scripts\activate.bat #cmd
or .\venv_name\Scripts\Activate.ps1 #powershell
macOS/Linux(终端):
source venv_name/bin/activate
使用虚拟环境 [激活后,终端提示符前会显示 (venv_name)]
pip install 包名 # 例如:pip install requests
退出虚拟环境
deactivate
点击展开virtualenv教程
pip install virtualenv
virtualenv venv_name
# 指定 Python 版本(需系统已安装对应版本)
virtualenv -p python3.13 venv_name # 使用 Python 3.13
pip freeze > requirements.txt
pip install -r requirements.txt
Nuitka篇
这是一个将python转译成C,再打包成exe的工具,打包速度慢,但运行速度快,打包后的文件小。
安装nuitka
pip install nuitka
测试py文件能否执行
python xxx.py
打包需要的依赖;打包成单文件
nuitka xxx.py --standalone --onefile
补充文件路径
--include-data-file=电脑中文件的路径=程序中引用的路径
补充文件夹路径
--include-data-dir=文件夹路径=电脑中文件夹的路径=程序中调用的路径
为 Windows 可执行文件设置图标(需 .ico 格式)
--windows-icon-from-ico=图标路径
生成无控制台窗口的程序(适合 GUI 应用,如 PyQt、Tkinter)
--disable-console
eg:
nuitka xxx.py --standalone --onefile --include-data-file=电脑中文件的路径=程序中引用的路径 --include-data-dir=文件夹路径=电脑中文件夹的路径=程序中调用的路径 --windows-icon-from-ico=图标路径 --disable-console
查看报错
**xxx.exe
**在cmd中查看
缺点
用最新版的python3.13出现MinGW64 编译器不兼容
解决办法:安装最新 MSVC 编译器,运行安装器,
勾选 “使用 C++ 的桌面开发”(无需安装完整 Visual Studio,仅需组件)。
在右侧 “可选组件” 中,确保勾选 “MSVC v143 - VS 2022 C++ x64/x86 生成工具”(版本需 ≥14.3)
和 “Windows 10 SDK”(或 Windows 11 SDK,匹配你的系统版本)
之后再重新打包nuitka 2.py --standalone --onefile --msvc=latest
PyInstaller
这是一个将python直接打包成exe的工具,打包速度快,但运行速度满,且打包后的文件大。(简写的大小写不能改)
安装PyInstaller
pip install pyinstaller
单文件打包
pyinstaller --onefile xxx.py # 简写:-F
自定义生成的可执行文件名称(默认与脚本名一致)
--name=程序名 # 简写:-n
生成无(有)控制台窗口的程序
--noconsole #简写:-w
(--console #简写:-c
)
打包额外资源文件(如图片、配置文件)
--add-data=源文件:目标路径(Windows 用 ; 分隔) #简写:-a
点击展开打包示例
- 单个文件: --add-data "src/file.txt;dest" (仅打包 file.txt 到 dest/ 目录)
- 同类型文件: --add-data "src/*.png;dest/images" (打包所有 .png 图片到 dest/images/)
- 整个文件夹(包括子目录): --add-data "src/folder/*;dest/folder" (打包 folder/ 下的所有内容,保持目录结构)
手动指定隐藏的依赖模块(解决动态导入导致的 “ModuleNotFoundError”)
--hidden-import=模块名 #简写:-p
清理上次打包的临时文件,避免缓存干扰
--clean
中文显示乱码
*确保脚本中编码声明正确(# -- coding: utf-8 -*-) 避免在路径或文件名中使用中文(尤其 Windows 系统)**
打包后文件过大
用 –exclude-module 排除不需要的模块(如 --exclude-module=matplotlib
)
清理虚拟环境,仅保留必要依赖后再打包