目录

Python打包

misaraty 更新 | 2022-02-08
前言

Nuitka

1

安装

1
conda install -c conda-forge nuitka
报错
1
2
3
4
5
Nuitka:INFO: Running C compilation via Scons.
Traceback (most recent call last):
  File "C:\PROGRA~3\ANACON~1\lib\SITE-P~1\nuitka\build\INLINE~1\bin\scons.py", line 40, in <module>
    import SCons.Script  # pylint: disable=import-error
ModuleNotFoundError: No module named 'SCons'
解决
1
conda install -c conda-forge scons
报错
1
2
3
4
5
Is it OK to download and put it in 'C:\Users\m\AppData\Local\Nuitka\Nuitka\gcc\x86_64\11.2.0-12.0.1-9.0.0-r1'.

No installer needed, cached, one time question.

Proceed and download? [Yes]/No
解决
Enter即可。

运行

1
2
python -m nuitka --onefile --remove-output --windows-icon-from-ico=./icon.ico test.py
python -m nuitka --onefile --remove-output --windows-icon-from-ico=./icon.ico test2.py
注意
  • --onefile:生成单文件。

  • --remove-output: 移除编译输出的中间文件。

  • --windows-icon-from-ico:exe图标。

报错
1
Nuitka-Onefile:WARNING: Onefile mode cannot compress without 'zstandard' module installed.
解决
1
conda install -c conda-forge zstandard

Pyinstaller

2

安装

1
conda install -c conda-forge pyinstaller

运行

1
pyinstaller --onefile --icon=./icon.ico test.py

Embeddable

3

安装

下载Python 3.8.10 Windows embeddable package (64-bit)

运行

新建.bat文件,

1
2
3
@echo off
".\python-3.8.10-embed-amd64\python.exe" .\test.py
pause
注意
也可以不用bat脚本,直接将.py文件拖拽到python.exe图标上。

Embeddable-Lite

只保留python-3.8.10-embed-amd64文件夹内的python.exepython38.dllpython38.zip

Embeddable-Plus

45

Embeddable版本基础上增加NumpyMatplotlib

  1. 修改python38._pth,将
1
#import site

          改为,

1
import site
  1. 下载get-pip.py,放置于./python-3.8.10-embed-amd64内,拖拽到python.exe图标上。
报错
1
WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLEOFError(8, 'EOF occurred in violation of protocol (_ssl.c:1131)'))': /simple/pip/
解决
  1. close proxy

  2. ./python-3.8.10-embed-amd64内新建pip.ini

1
2
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/
  1. ./python-3.8.10-embed-amd64内打开cmd
1
python.exe get-pip.py
1
2
3
python.exe -m pip install numpy
python.exe -m pip install matplotlib
python.exe -m pip install wxpython

  1. Nuitka User Manual ↩︎

  2. PyInstaller Manual ↩︎

  3. 怎么样打包 pyqt 应用才是最佳方案?或者说 pyqt 怎样的发布方式最优? - 韦易笑的回答 ↩︎

  4. 超軽量、超高速な配布用Python「embeddable python」 ↩︎

  5. 设置pip源国内源 ↩︎