我正在使用cython
生成*.c
个文件,稍后将使用MS Visual Studio 2017编译为C/C++
。这一切都很精彩,所有python *.lib
都是动态链接的小例外。
由于我的目标是生成一个自包含的exe(大的exe大小不是问题),我想问一下是否可以静态链接所有的Python *.lib
。我已经尝试指定\MT
发布选项并在Debugger include上定义所有Python库。
不幸的是,我的所有努力都是徒劳的,因为动态链接的可执行文件在复制到另一台计算机时找不到python3.dll
。目前我计划将整个python安装目录与可执行文件一起复制,并在编译时指定正确的包含链接。
因此,我对生成一个独立的可移植可执行文件的任何选项感兴趣。
感谢您的帮助和建议。
答案 0 :(得分:1)
xaav是正确的。
我无法评论所以相反,我会将此作为解决方案发布,希望它能引导您走上正确的道路。
Cython存在是有原因的。你得到你的python代码,添加一些更改和bam,你的代码是cythonised。
这有两个原因。要混淆代码,它可以加速代码(取决于)。
为什么不使用cython和pyinstaller?这是经过试验和测试的。 Pyinstaller甚至说它支持它。你所采取的方法可以在理论上完成,但它过于复杂,甚至不需要。
可能的担忧:
但他们不能窃取我的源代码吗?不,它已被cython化,所以是,但不容易。
我不能使用Nuitka吗?是的,如果你想让它变得越来越麻烦而且没有按预期工作。
库怎么样,它们不能在另一台PC上运行?规范文件存在是有原因的。一点人工处理,这可以工作。
我不能编译成c ++,然后单独使用它吗?看看未回答的问题的数量和无法使用它的人。此外,当pyinstaller和cython存在并执行相同的操作时,不需要它。 Cython受到广泛支持。感觉就像你在做长而艰难的事情。
但是不容易编译成c ++。没办法,pyinstaller已经完成了大部分的工作。您可能必须在此处调整spec文件,否则它是唯一的方法。请记住,它也与pyupdater集成。