代码之家  ›  专栏  ›  技术社区  ›  Nathaniel Rivera Saul

Cython编译使用错误的Mac OS库

  •  1
  • Nathaniel Rivera Saul  · 技术社区  · 6 年前

    我正在做一个用Cython构建的项目,在一些特定的系统上有一些有趣的安装问题。问题归结为Mac OS版本不匹配,或者我对Mac OS版本的理解不匹配。

    在我的系统上安装Cython库时,编译日志显示我使用的是Mac OS版本10.12,即使我的系统告诉我我使用的是10.13。汇编日志摘录如下:

    creating build/temp.macosx-10.12-x86_64-3.6
    

    这对我来说不是问题,但另一个用户在10.13上发布系统时遇到了问题,但他们的编译显示为10.7(这需要一些其他解决方法)。

    有没有办法从Python脚本中判断将使用哪些构建库?

    编辑:

    >>> python -c "import platform; print(platform.mac_ver())"
    ('10.13.6', ('', '', ''), 'x86_64')
    
    >>> python -c "import distutils.util; print(distutils.util.get_platform())"
    macosx-10.12-x86_64
    
    0 回复  |  直到 6 年前
        1
  •  0
  •   Kolyan1    4 年前

    我的背景

    BigSur(Macos10.16)、python3.6和cython也出现了类似的问题。 .pyxbld )我发现 temp.macOSX-10.7 而且显然与builds.16不兼容。

    在引擎盖下,cython使用distutils来确定平台版本(与其他东西相反)。 https://github.com/python/cpython/blob/master/Lib/distutils/util.py 那么distutils怎么了?

    经过大量的搜索(包括这篇文章),我发现了一篇非常有趣的好文章(尽管是2014年的),解释了这一现象。 https://lepture.com/en/2014/python-on-a-hard-wheel

    解决方案(有点)

    看来解决办法是:

    1. 重新安装python(然后是所有软件包)
    2. python -c "import distutils.util; print(distutils.util.get_platform())" macosx-10.12-x86_64 输出正确的版本。

    很明显,在大苏尔河和巨蟒上,这个解决方案还不起作用。。。(如果水蟒的解决方案有效,则将更新正在进行的工作)[2020年11月20日星期五]