我正在尝试使用cython将c ++代码包装到python中。 我对此.py代码是
from distutils.core import setup
from Cython.Build import cythonize
setup(
ext_modules=cythonize("helloworld.pyx"),
)
但是,在遵守它时
python setup.py build_ext --inplace
我收到错误
running build_ext
building 'helloworld' extension
Traceback (most recent call last):
File "setup.py", line 4, in <module>
ext_modules=cythonize("helloworld.pyx"),
File "C:Python34libdistutilscore.py", line 148, in setup
dist.run_commands()
File "C:Python34libdistutilsdist.py", line 955, in run_commands
self.run_command(cmd)
File "C:Python34libdistutilsdist.py", line 974, in run_command
cmd_obj.run()
File "C:Python34libdistutilscommandbuild_ext.py", line 339, in run
self.build_extensions()
File "C:Python34libdistutilscommandbuild_ext.py", line 448, in build_extensions
self.build_extension(ext)
File "C:Python34libdistutilscommandbuild_ext.py", line 503, in build_extension
depends=ext.depends)
File "C:Python34libdistutilsmsvc9compiler.py", line 460, in compile
self.initialize()
File "C:Python34libdistutilsmsvc9compiler.py", line 371, in initialize
vc_env = query_vcvarsall(VERSION, plat_spec)
File "C:Python34libdistutilsmsvc9compiler.py", line 287, in query_vcvarsall
raise ValueError(str(list(result.keys())))
ValueError: ['path']
我正在开发Visual Studio 2010。我知道这个错误是因为 vcvars6.bat但我不知道如何解决它。请帮忙
看起来您运行的是 64 位。 Visual Studio 2010 只有在使用 Python 3.3 或 3.4 时才是正确的选择。
我猜你没有正确设置编译器。 在Python 3.4部分,Ionel的代码日志讨论了正确的安装顺序(VC++ 2010,Windows SDK for VS 2010,.NET 4.0,创建一个伪造的vcvars64.bat文件,应用VC 2010 SP1,应用VC++ 2010 SP1。
或者,您也可以尝试设置一些环境变量,如 Ionel Codelog 帖子中 Python 3.4 部分底部所述。
我猜你弄错了版本,顺序错了,或者跳过了假.bat文件或环境变量。