Python Cython与Visual Studio(Windoes SDK包)编译器cl.exe一起创建.pyd
我正在尝试使用随附的Python Cython与Visual Studio(Windoes SDK包)编译器cl.exe一起创建.pyd,python,visual-studio,compilation,compiler-errors,cython,Python,Visual Studio,Compilation,Compiler Errors,Cython,我正在尝试使用随附的cl.exe将Cython创建的.c文件编译为.pyd文件 因为这是在Windows7 64位下为Python2.7 64位构建Cython的包,所以我认为使用相同的编译器来创建.pyd文件是个好主意 我当前的通话使用了一个带有以下内容的cythoncc.bat文件: set CLPATH="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\cl.exe" SET INCLUDE="C:\Progr
cl.exe
将Cython创建的.c
文件编译为.pyd
文件
因为这是在Windows7 64位下为Python2.7 64位构建Cython的包,所以我认为使用相同的编译器来创建.pyd
文件是个好主意
我当前的通话使用了一个带有以下内容的cythoncc.bat
文件:
set CLPATH="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\amd64\cl.exe"
SET INCLUDE="C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include";"C:\Program Files\Microsoft SDKs\Windows\v7.0\Include";"C:\Python27\include";"C:\Python27\Lib\site-packages\numpy\core\include";
SET LIB="C:\Python27\libs";"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\amd64";"C:\Program Files\Microsoft SDKs\Windows\v7.0\Lib\x64";
SET CFLAGS="/O2 /favor:<INTEL64>"
%CLPATH% %CFLAGS% /Fo%1.pyd %2.c
并创建一个.pyd
和一个.lib
文件
任何帮助都将不胜感激!谢谢大家! 使用和中解释的
setup.py
配方
由Saullo编辑:
setup.py
看起来就像这样:
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
ext_modules = [Extension("_conecyl", ["_conecyl.pyx"])]
setup(
name = '_conecyl',
cmdclass = {'build_ext': build_ext},
ext_modules = ext_modules
)
通过以下调用,它工作得非常完美:
setenv /x64 / release
set INCLUDE=%INCLUDE%;C:\Python27\include;C:\Python27\Lib\site-packages\numpy\core\include
set LIB=%LIB%;C:\Python27\libs
set DISTUTILS_USE_SDK=1
python setup.py install
我一直在与这个在Windows上创建的Cython pyd进行斗争,并找到了一个可行的解决方案。这篇文章是在搜索“build cython pyd visual studio windows”时出现的,所以我想我应该添加我的方法来避免人们的愤怒和眼泪 我的要求如下:
- 我的大部分代码都是用PyCharm用Python编写的
- 我使用Cython来加速某些涉及固定大小浮点数数组的计算
- 调试Cython(这是另一个主题!)是可行的,但不是用户友好的。我发现最好的方法是不断添加/删除日志/打印 语句并重新运行我的dev Python脚本。很明显,我想快点 从更改pyx文件转变为将pyd文件链接到 再次在Python中使用
- 包含Python venv中的目录
- Python环境中的libs目录
- 将输出名称更改为pyd
- 发布版本中的链接调试符号
- 没有预编译头
- 在完成测试之前,不要进行短期构建或优化
- 将pyd/pbd复制到Python导入目录的后期构建步骤 这些都是非常标准的东西(你可以在许多MSV帖子中找到)
- 第1行:“C:…您的\u路径…\Scripts\cythonize.exe”-a“C:…您的\u路径…\functions\u 362\u 64.pyx”
- 第2行:设置路径=C:。。。。。从生成输出粘贴
- 第3行:设置LIB=C:。。。。。从生成输出粘贴
- 第4行:设置LIBPATH=C:。。。。。从生成输出粘贴
- 第5行:集合包含=C:。。。。。从生成输出粘贴
- 第6行:“C:…microsoft_路径…\CL.exe”/C。。。。。从生成输出粘贴
- 第7行:复制/Y“C:…生成后复制pyd…”
- 第8行:副本/Y“C:。。。。。生成后副本pdb
- 更改pyx文件
- 快跑,蝙蝠
- 再次运行Python
- 将windows_setup.bat添加到程序包目录
- 在VS本机提示符中运行此命令
setenv /x64 / release
set INCLUDE=%INCLUDE%;C:\Python27\include;C:\Python27\Lib\site-packages\numpy\core\include
set LIB=%LIB%;C:\Python27\libs
set DISTUTILS_USE_SDK=1
python setup.py install