1

我正在尝试使用 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:\Python34\lib\distutils\core.py", line 148, in setup
    dist.run_commands()
  File "C:\Python34\lib\distutils\dist.py", line 955, in run_commands
    self.run_command(cmd)
  File "C:\Python34\lib\distutils\dist.py", line 974, in run_command
    cmd_obj.run()
  File "C:\Python34\lib\distutils\command\build_ext.py", line 339, in run
    self.build_extensions()
  File "C:\Python34\lib\distutils\command\build_ext.py", line 448, in build_extensions
    self.build_extension(ext)
  File "C:\Python34\lib\distutils\command\build_ext.py", line 503, in build_extension
    depends=ext.depends)
  File "C:\Python34\lib\distutils\msvc9compiler.py", line 460, in compile
    self.initialize()
  File "C:\Python34\lib\distutils\msvc9compiler.py", line 371, in initialize
    vc_env = query_vcvarsall(VERSION, plat_spec)
  File "C:\Python34\lib\distutils\msvc9compiler.py", line 287, in query_vcvarsall
    raise ValueError(str(list(result.keys())))
ValueError: ['path']

我正在使用 Visual Studio 2010。我有点意识到这个错误是因为 vcvars6.bat 但我不知道如何解决它。请帮助

4

1 回答 1

2

看起来您正在运行 64 位。只有在使用 Python 3.3 或 3.4 时, Visual Studio 2010 才是正确的选择

我猜你没有正确设置编译器。在 Python 3.4 部分中,Ionel 的 Codelog讨论了正确的安装顺序(VC++ 2010、Windows SDK for VS 2010、.NET 4.0、创建假 vcvars64.bat 文件、应用 VC 2010 SP1、应用 VC++ 2010 SP1。

或者,您也可以尝试设置一些环境变量,如 Ionel 的 Codelog 帖子中 Python 3.4 部分的底部所述。

我猜你弄错了版本,错误的顺序,或者跳过了假的 .bat 文件或环境变量。

于 2017-04-30T21:12:15.877 回答