发布嵌入-赛门编译的代码所需的最小文件集,并使其在任何机器上工作。

问题描述 投票:0回答:1

TL;DR:如何用Cython来代替Py2exe、cx_freeze、pyinstaller等分发方式。


以下是 在Cython中制作可执行文件我想知道如何通过先用Cython编译Python程序,将其发布给任何Windows用户(他的机器上还没有安装Python)。--embed.

让我们用一个 test.py:

import json
print(json.dumps({'key': 'hello world'}))

并编译它。

cython test.py --embed
call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64
cl test.c /I C:\Python37\include /link C:\Python37\libs\python37.lib

它工作了,并产生了一个140KB的 test.exe 可执行文件。

运行 test.exe 在另一台机器上不能开箱即用,它需要。

即使这样做,它仍然不工作 (下面的截图而不是复制粘贴,因为我在虚拟机中没有管理好复制粘贴--这里不说了):

ModuleNotFoundError.没有名为'encodings'的模块。没有名为 "编码 "的模块

enter image description here

问题:分发一个文件所需的最小文件集是什么?--embed-Cython编译的代码,并使其在任何机器上工作(之前没有安装Python)?

python windows compilation cython cx-freeze
1个回答
1
投票

经过进一步研究,似乎这些文件已经足够了。

笔记。

  • 如果你需要另一个图书馆,像 pygame,只需将文件夹从 C:\Python37\Lib\site-packages\pygame 似乎可以

  • 对我来说,concrt140.dll、msvcp140.dll、vccorlib140.dll似乎没有必要。

© www.soinside.com 2019 - 2024. All rights reserved.