虚拟环境篇(建议)

在项目文件夹中打开终端

创建虚拟环境

python3 -m venv venv_name venv_name即为虚拟环境名称,建议英文

激活虚拟环境

Windows:

venv_name\Scripts\activate.bat #cmdor .\venv_name\Scripts\Activate.ps1 #powershell

macOS/Linux(终端):

source venv_name/bin/activate

使用虚拟环境 [激活后,终端提示符前会显示 (venv_name)]

pip install 包名 # 例如:pip install requests

退出虚拟环境

deactivate


点击展开virtualenv教程

  • 安装virtualenv:pip install virtualenv

  • # 基本用法(默认使用当前 Python 版本)
    virtualenv venv_name
    # 指定 Python 版本(需系统已安装对应版本)
    virtualenv -p python3.13 venv_name # 使用 Python 3.13

  • 激活 / 退出虚拟环境:与 venv 完全相同

  • 导出当前环境的依赖列表:
    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
清理虚拟环境,仅保留必要依赖后再打包