Windows Cython Python代码然后编译静态可执行文件

时间:2015-03-01 03:47:26

标签: python visual-studio-2008 static executable cython

我编写了许多简短的实用程序python脚本,这些脚本最终会让那些不具备计算机知识的人使用,并且最终让他们使用正确的模块安装python非常具有挑战性。我不想使用像py2exe这样的东西,因为它们只是重新打包解释器并且可以运行得更慢(速度是其中一些脚本的一个主要问题)。我知道像Matlab这样的解释性语言提供了将脚本转换为二进制可执行文件以提高速度和可移植性的能力,我希望能用python做同样的事情。另请注意,我是Fortran 77到2008程序员的专家,但在C / C ++上很糟糕。

我已经读过可以使用cython和--embed选项编译python代码。我遇到的问题是我只找到了关于如何使用GCC和unix进行最终编译的参考,或者他们引用了破碎的... / embedcython链接。我有一个visual studio 2008的副本,但不确定如何设置项目以便从cython代码编译静态可执行文件。这个可执行文件需要独立于python解释器,并且可以在没有安装它的情况下移植到某个人。通常这些程序是用Fortran编写的,但我更喜欢python,因为它易于代码,良好的操作系统和IO支持,以及在某些情况下与Fortran相比的灵活性。

我已经能够使用--embed运行Cython并推导出以下编译选项:

set FILE_X=MyScript
set INC=C:\Python27\include
set INC2=C:\Python27\PC
set PYLIB=C:\Python27\libs
set PYLIB2=C:\Python27\PCbuild

cython %FILE_X%.pyx  --embed

CL.exe  /c /nologo /Ox /MT /W3 /GS- /DNDEBUG /I%INC% /I%INC2%  /Fo%FILE_X%.obj /Tc%FILE_X%.c

LINK.exe /OUT:%FILE_X%.exe  /nologo /INCREMENTAL:NO /LIBPATH:%PYLIB% /LIBPATH:%PYLIB2% %FILE_X%.obj /MANIFESTFILE:%FILE_X%.manifest

我遇到的问题是Symantic Endpoint Protection会立即锁定文件并将其隔离为病毒。如果我删除隔离区,则会立即重新隔离隔离区。通常我不在乎,但是这个软件将用在政府计算机上,这些计算机将使用相同的软件,从而阻止我的最终用户运行已编译的代码。这也使我无法测试代码是否有效。

任何关于如何编译Windows,独立,基于python代码的可执行/二进制的评论将不胜感激。请注意,之前的很多stackoverflow答案都是指已经死亡的链接。

我确实有visual studio 2008,所以如果有关于如何创建项目来编译项目中的cython c代码的建议非常感谢(我也有其他版本,但我认为这是唯一有效的对于cython代码?)。在这种情况下,我只是让项目解决方案指向生成的c文件并在Visual Studio中编译它。此外,对我的编译批处理脚本的任何编辑都将非常感激。

总之,我希望是一种采取

的方法

MyScipt.pyx使用cython制作MyScript.c,然后将其静态编译为MyScript.exe

并将该可执行文件提供给没有python解释器的人,但是他们可以通过双击它或在命令提示符下键入它来运行它。

由于

0 个答案:

没有答案
相关问题