【问题标题】:Cython Compiling ErrorCython 编译错误
【发布时间】:2024-04-24 09:20:01
【问题描述】:
C:\Users\AliAbbas\Google Drive\Work\J.E.S.S\Cython\Code>python setup.py build_ex
t -i --compile=mingw32 -DMS_WIN64
running build_ext
Traceback (most recent call last):
  File "setup.py", line 4, in <module>
    setup(ext_modules = cythonize("HelloWorld.pyx"))
  File "C:\Program Files\Python35\lib\distutils\core.py", line 148, in setup
    dist.run_commands()
  File "C:\Program Files\Python35\lib\distutils\dist.py", line 955, in run_comma
nds
    self.run_command(cmd)
  File "C:\Program Files\Python35\lib\distutils\dist.py", line 974, in run_comma
nd
    cmd_obj.run()
  File "C:\Program Files\Python35\lib\distutils\command\build_ext.py", line 308,
 in run
    force=self.force)
  File "C:\Program Files\Python35\lib\distutils\ccompiler.py", line 1031, in new
_compiler
    return klass(None, dry_run, force)
  File "C:\Program Files\Python35\lib\distutils\cygwinccompiler.py", line 282, i
n __init__
    CygwinCCompiler.__init__ (self, verbose, dry_run, force)
  File "C:\Program Files\Python35\lib\distutils\cygwinccompiler.py", line 157, i
n __init__
    self.dll_libraries = get_msvcr()
  File "C:\Program Files\Python35\lib\distutils\cygwinccompiler.py", line 86, in
 get_msvcr
    raise ValueError("Unknown MS Compiler version %s " % msc_ver)
ValueError: Unknown MS Compiler version 1900

我这几天一直在尝试编译这段代码,在几次错误之后,我到了这里,我不知道下一步该做什么。我已经安装了 MingW32 不知道接下来要做什么

我正在关注 O'Reilly 关于 cython 的书,使用 Windows 8.1,并且一直在尝试 Python 3.6.1 和 3.5.1

【问题讨论】:

  • 这种事情总是很难远程设置或诊断 - 通常最好的解决方案是使用包含所有库和编译器设置的 Python 发行版。我自己使用过 WinPython(尽管我认为 3.6 可能不适用于任何发行版上的 mingw)。如果您不想这样做,那么您需要提供有关您安装的确切位置和位置的更多详细信息(尽可能多的信息)。另外,我不确定 Mingw32 和 64 位 Python 是否可以一起工作 - 你检查过吗?
  • @DavidW 我尝试使用 64 位 MinGW 发行版(mingw-w64,我认为这很接近),从 Python 3.6 切换到 WinPy 3.5.3,写完后:C:\Users\AliAbbas\Google Drive\Work\J.E.S.S\Cython\Code&gt;python setup.py build_ex t -i --compiler=mingw32 -DMS_WIN64 我得到了我第一次使用 Cython 时遇到的同样的错误:TypeError: unorderable types: NoneType() &gt;= str() 我现在不知道还能做什么 感谢您的帮助! :)
  • 我要尝试的另一件事是不使用--compiler=mingw32 行(希望它应该自动选择编译器)。除此之外我不知道 - 对不起!

标签: python python-3.x compiler-errors cython


【解决方案1】:

您使用的是 Python 3.5,您确定您使用的编译器与构建 Python 所用的相匹配吗?谷歌搜索应该会很快找到。 Visual Studio 2015 社区适用于大多数 Windows 版本。我在您的帖子中看到您也在尝试 Linux,这很可能是一些 GCC 变体。

【讨论】:

  • 好吧,我已经安装了 Visual Studio 2017,它应该安装了 c++ 编译器吧?如果没有,那我该如何检查呢?
  • @AliAbbas 如果您有 (C)Python 3.5 for Windows,那么您必须使用 Visual Studio 2015。正如我提到的使用社区版本,它会在您的 Windows 下拉菜单中为您提供开发人员命令提示符它应该为您的构建加载所有必需的 VS 2015 库。喜欢MSBuild Command Prompt for Visual Studio 2015
  • 您也可以输入:import sys,后跟 print(sys.version),它应该会告诉您正在使用的 Python 的编译器。