我正在使用cython生成*.c文件,稍后将用MS Visual Studio2017编译为C/C++。这一切都很出色,除了所有python *.lib都是动态链接的小例外。由于我的目标是生成一个自包含的可执行文件(大型可执行文件不是问题),我想问一下是否可以静态链接所有的Python *.lib。我已经尝试指定了Python选项,并在调试器中定义了所有\MT库。
不幸的是,我所有的努力都是徒劳的,因为动态链接的可执行文件在复制到另一台计算机时无法找到python3.dll。目前,我计划复制整个python安装目录和可执行文件,并在编译时指定适当的包含链接。
因此,我对产生一个自包含的可移植可执行文件的任何选择都很感兴趣。
我将非常感谢你的帮助和建议。
发布于 2017-12-12 11:09:20
xaav是正确的。
我不能评论,所以我将把这篇文章作为一个解决方案,希望它能指引你走上正确的道路。
Cython的存在是有原因的。你得到了你的python代码,添加了一些修改,然后,你的代码就变成了Cython化。
这是好的,有两个原因。来混淆代码,它可以加快代码的速度(依赖于)。
为什么不使用cython和pyinstaller呢?这是经过试验和测试的。Pyinstaller甚至说它支持它。你正在采取的方法在理论上是可以做到的,但它太复杂了,甚至不需要。
可能的顾虑:
但他们就不能偷走我的源代码吗?不,它是赛门化的,所以是的,但不容易。
我不能用Nuitka吗?是的,如果你想让它有be并且不能像预期的那样工作。
那么这些库呢,它们不能在另一台pc上运行?等级库文件的存在是有原因的。一些手动处理,这是可以工作的。
我不能编译成c++,然后使其成为独立的吗?看看未回答的问题和无法使其工作的人的数量。而且,当pyinstaller和cython存在并且做同样的事情时,就不需要它了。Cython得到了广泛的支持。感觉就像你在用漫长而艰难的方式来做事情。
但是编译成c++不会更容易。不可能,pyinstaller已经完成了大部分的分支工作。您可能需要到处调整spec文件,否则这是唯一的方法。请记住,它还集成了pyupdater。
https://stackoverflow.com/questions/47755807
复制相似问题