Cython编译为exe,Windows

时间:2015-12-28 07:25:12

标签: python windows compilation cython anaconda

我无法将Cython生成的C代码编译到Windows上的EXE。

Windows 10
Python 3.5,32bit,Anaconda
Visual Studio 14.0

使用this stackoverflow线程,我可以使用命令行将 test.py 转换为 test.c

Python C:\Anaconda3\Scripts\cython-script.py test.py --embed

我尝试使用命令行再次将 test.c 编译为 test.exe

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat x86
# (not shown) cd to test.c directory
cl.exe  /nologo /Ox /MD /W3 /GS- /DNDEBUG -Ic:\Anaconda3\include -Ic:\Anaconda3\PC /Tctest.c /link /OUT:"test.exe" /SUBSYSTEM:CONSOLE /MACHINE:X86 /LIBPATH:c:\Anaconda3\Lib\site-packages\Cython\Includes\libc /LIBPATH:c:\Anaconda3\Lib\site-packages\Cython\Includes\PCbuild

但结果是错误信息:

LINK : fatal error LNK1104: cannot open file 'python35.lib'

我不确定导致此错误的原因,而且我也不相信我指的是正确的LIBPATH。

我还没有找到解决Windows + Cython + Anaconda + Python 3.5 + C编译问题的线程。谢谢你的帮助。

编辑:

cjrh的回答解决了初始错误,test.c成功编译成了test.exe。

但是,运行test.exe会产生以下错误:

Fatal Python error: Py_Initialize: unable to load the file system codec
LookupError: no codec search functions registered: can't find encoding

修复:创建一个名为PYTHONPATH的新系统变量。在Windows中,这可以通过以下方式完成:

我的电脑>属性>高级>环境变量。

制作PYTHONPATH包含以下修正错误:

C:\ Anaconda3; C:\ Anaconda3 \ DLLs; C:Anaconda3 \ Lib; C:Anaconda3 \脚本

1 个答案:

答案 0 :(得分:1)

我没有方便的Windows实例,但看起来您可能缺少用于链接Python库本身的LIBPATH条目,例如

... /LIBPATH:c:\Anaconda3\libs /LIBPATH:c:\Anaconda3\PCbuild