1
solxnp 2019-10-24 10:15:06 +08:00
docker?
|
2
ClericPy 2019-10-24 10:15:27 +08:00 1
去看 linkedin 的 shiv 库, 会打包成一个 pyz 文件, 以前我就是这么让别人安装 Python, 其他源码加依赖都是用我这个 pyz
下面这个是打包 Django 成 pyz 的方式 https://shiv.readthedocs.io/en/latest/django.html 如果把官方那个 Windows 嵌入式绿色版解释器一起给对方, 甚至连安装 Python 都不需要, 这两种方式我还真都琢磨过 |
3
imn1 2019-10-24 10:20:44 +08:00
实际上,对于不懂 python 的人来说,仍然是打包 exe 更好
懂的人,直接源码扔过去就行 扔源码给不懂 python 的人,后面有得烦 |
4
omph OP |
5
chengxiao 2019-10-24 11:33:38 +08:00
给个提醒
pyinstaller win10 下打的 exe 包 并不能兼容 win7....需要在 win7 下再打一次 |
7
ClericPy 2019-10-24 11:41:19 +08:00
@omph 不用客气, 之前也做过相关操作而已, 部分历史代码可以看 https://github.com/ClericPy/distribute-python-on-windows 不过不知道还可以用么, 这库的主要操作就是去官网下载 embed zip, 然后解压缩, 然后打包 shiv , 然后生成一个 run.bat 用来执行, 你稍微改改就好了
@wangyzj 两码事, shiv 的用处接近于虚拟环境的 zip 化, 打包成单个 pyz 文件以后, 整个环境的所有第三方依赖就独立于全局环境了. pyinstaller 只是一个编译工具, 而且是把解释器一起编译进去的, shiv 是不带解释器的, 所以 pyz 文件很小 |
8
ClericPy 2019-10-24 11:43:24 +08:00
@chengxiao 你这个结论是最近的么, 之前我还真在 Windows10 上打包了给 Windows7 的人用过, 是正常通过的.
不过你说的这个情况在 3 年以前, pyinstaller 还不稳定的时候确实存在, 所以每次打包为了兼容性, 我会把需要的所有 VC100.dll 什么的一起带上, 以及 pyqt 打包会缺失的 platform.dll 也都带进去, 那年代为了兼容性真的煞费苦心了. 前段时间问过群友, 说这些 bug 在新版本 pyinstaller 都已经自动兼容好了 |
9
really28 2019-10-24 11:43:55 +08:00
老哥你的头像不错哦
|
10
pcbl 2019-10-24 11:47:29 +08:00 1
exe 通用性才是最好的,别搞那些歪门邪道了。pyinstaller -F win7 win8 win10 都可以正常运行 打包后的 exe 也不大
|
12
ClericPy 2019-10-24 11:55:56 +08:00
@wangyzj https://github.com/linkedin/shiv 你看看不就知道了, PEP 441 里也讲的很清楚, 把所有第三方包打包成一个压缩文件 xx.pyz, 然后在有解释器的环境里就可以像 bin 一样直接运行了, 类似于
$ ./boto.pyz 然后根据参数, 在 pyz 文件里带上要执行的 py 文件的函数, 就可以整个项目打包成类似可执行文件的 pyz 懒得学就直接看上面那个 distwin 吧, 是一种协议, 允许 Python 解释器直接运行它, 并带上它里面包含的环境, shiv 后期也把局部环境被全局弄脏的 bug 给修复了, 变成了局部优先, 所以尽量用新版本 还有个小地方要注意, 虽然 Python 代码是跨平台的, 但是如果遇到需要编译 C 文件的库, 就没法跨平台了, 毕竟编译的玩意是不兼容的 |
13
Osk 2019-10-24 12:14:54 +08:00 2
我直接使用 Windows Embedded zip 解释器环境做开发...
然后把解释器 + 启动脚本打包给对方, 还行. |
14
love 2019-10-24 12:26:22 +08:00
我以前这么分发过,下载个绿色版单目录 python,把自己的代码放进去,做了 BAT,搞定
|
15
l4ever 2019-10-24 12:52:15 +08:00
1. pyinstaller 没你说的兼容性问题
2. pip install -r requestment.txt |
16
l4ever 2019-10-24 12:53:22 +08:00
```
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple pip install -r requirements.txt ``` |
18
CallMeReznov 2019-10-24 13:39:22 +08:00
没见过打包成 EXE 后 在 7 和 10 上有执行兼容的问题的
不过 pyinstaller 在 python 不同版本上到是有很多问题,我之前用 3.6 可以用 3.7 就不行 |
19
castle6610 2019-10-24 15:54:54 +08:00
@chengxiao 而且还分 x86 和 x64,也要分别打包。如果在 xp64 的打包的,在 xp32 上居然也不能运行。。。。
|
21
bearxu 2019-10-24 17:11:48 +08:00
我把依赖打包放进 packages.zip , 加上 python embeddable 版
基本就相当于 绿色版软件了 |