上篇讲到 pyinstaller打包exe太大的问题

python 打包后的exe路径 python打包的exe文件太大了_Python

那既然pyinstaller这么麻(nan)烦(yong) 那为什么不找一种方法代替它呢?

经过多方面打听,一位道上的盆友告诉了我一个惊天大秘密

python有embedded版本

python 打包后的exe路径 python打包的exe文件太大了_python 打包后的exe路径_02

当我看完了官方的文档以后。。。我的表情是这样的

python 打包后的exe路径 python打包的exe文件太大了_python_03

惊喜&惊喜&惊喜&惊喜 像发现了新大陆一样

python37的embedded版本

python 打包后的exe路径 python打包的exe文件太大了_python 打包后的exe路径_04

因为64位exe可能不支持32位系统 反其道而行之直接选32位就完事了

python 打包后的exe路径 python打包的exe文件太大了_Python_05

python 打包后的exe路径 python打包的exe文件太大了_python_06

11.5M 很良心有没有!!

然后解压这个.zip压缩包就可以当作一个迷你python正常使用了!

再也不用费尽心机让“聪明”的用户们安装令人头大的python并且加入path了

让我们试一下!

python 打包后的exe路径 python打包的exe文件太大了_打开方式_07

嗯···不错不错 味道好极了(真香)

看来问题不大!那么我们该如何调用这个特殊版本的迷你python呢?

请注意:如果您的电脑上存在完整的python环境并且已经加入了PATH当中 直接用cmd调用python像这样:

python 打包后的exe路径 python打包的exe文件太大了_打开方式_08

调用的仍然是存在于PATH当中的完整的python环境

正确打开方式:把embedded-python.exe的完整路径加上 像这样:

python 打包后的exe路径 python打包的exe文件太大了_Python_09

那么问题来了 如何让我们写的.py运行在指定的环境之上呢?

它笨我们不笨啊 这时候就有必要祭出伟大的命令行工具了 比如vbs啊bat啊

windows的福音啊

开整!

比如我写了一个test.py 想要用embedded python运行:

python 打包后的exe路径 python打包的exe文件太大了_python 打包后的exe路径_10

完美!

embedded-python:知道我的厉害了吧

强制但是:[思考··] 如果这个embedded-python只提供基础的库 那我要用到matplotlib Pillow怎么办? pip?

python 打包后的exe路径 python打包的exe文件太大了_python 打包后的exe路径_11

事实证明 没有pip!!!


下面我们讲如何给embedded-python安装pip

以及使用pip安装必要库~

-EOF- 高产似那啥??不存在的

上篇我们讲到embedded版本的基础操作

python 打包后的exe路径 python打包的exe文件太大了_python_12

可是却没有办法用pip安装必要的库

去看一下官方文档怎么说的

python 打包后的exe路径 python打包的exe文件太大了_python 打包后的exe路径_13

python 打包后的exe路径 python打包的exe文件太大了_python 打包后的exe路径_14

嗯。。。不支持 不光如此,Tcl/tk也是不给你滴。。。

可是谁甘心只用标准库敲代码?卒都不知道怎么卒的···

关键是他,,,他掉头发呀

python 打包后的exe路径 python打包的exe文件太大了_打开方式_15

程序猿(媛)们再一次发挥聪明才智,把pip塞进去了

python 打包后的exe路径 python打包的exe文件太大了_Python_16

Step 1

下载python-embedded(废话嘛这不是)

Step 2

解压缩 =w=

Step 3

找到自己python-embedded文件夹下的python37.pth(如果你下载的是27版本那当然就是python27._pth啦)

用记事本打开-w-(我管你用什么 你能打开就行了)

把# import site前面的注释符号“#”删除——保存

python37.zip
.

# Uncomment to run site.main() automatically
import site

python 打包后的exe路径 python打包的exe文件太大了_python_17

Step 4

去官网下载get-pip.py

别去给我全选--复制哈 复制我会打人的(全选一年也全选不完的说)

正确打开方式:

python 打包后的exe路径 python打包的exe文件太大了_打开方式_18

保存到你的python-embedded文件夹下

Step 5

用cmd cd到python-embedded文件夹下

记得带上python-embedded的完整路径 比如我解压在F:\python-3.7.3-embed-win32

就需要这么写:

F:\python-3.7.3-embed-win32\python.exe get-pip.py

python 打包后的exe路径 python打包的exe文件太大了_打开方式_19

至此 pip已经塞到了python-embedded里面 与此同时setuptools&wheel也安装完成

意味着:我们可以升级&安装.whl库啦

Step 6

用cmd cd到python-embedded\Scripts文件夹下

记得带上完整路径!比如:

F:\python-3.7.3-embed-win32\Scripts\pip.exe install xxx

python 打包后的exe路径 python打包的exe文件太大了_Python_20

.whl文件同理啦

F:\python-3.7.3-embed-win32\Scripts\pip.exe install xxx.whl

确保第三步已经完成!

否则会报错:

>>F:\python-3.7.3-embed-win32\Scripts\pip.exe install pypercilp
Traceback (most recent call last):
  File "D:\obj\Windows-Release\37win32_Release\msi_python\zip_win32\runpy.py", line 193, in _run_module_as_main
  File "D:\obj\Windows-Release\37win32_Release\msi_python\zip_win32\runpy.py", line 85, in _run_code
  File "F:\python-3.7.3-embed-win32\Scripts\pip.exe\__main__.py", line 5, in <module>
ModuleNotFoundError: No module named 'pip'

这样我们就完成了pip的安装&简单模块使用pip安装

python 打包后的exe路径 python打包的exe文件太大了_python 打包后的exe路径_21


但是···等等···!像官方文档说的:Tk不提供 并且牵扯到的tcl也不提供的情况下

我们怎么把tkinter安装在embedded版本里呢????

python 打包后的exe路径 python打包的exe文件太大了_Python_22

下期我们讲Tk&tcl在python-embedded里的安装方法!