我无法将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 \脚本
答案 0 :(得分:1)
我没有方便的Windows实例,但看起来您可能缺少用于链接Python库本身的LIBPATH
条目,例如
... /LIBPATH:c:\Anaconda3\libs /LIBPATH:c:\Anaconda3\PCbuild