Pip “会发生什么?”;纯粹的;Python+;Cython软件包在安装过程中出现内置故障?

Pip “会发生什么?”;纯粹的;Python+;Cython软件包在安装过程中出现内置故障?,pip,cython,setuptools,Pip,Cython,Setuptools,我只是读了这本书,我不确定我是否理解正确。听起来好像我可以保持所有Python文件的原样,在声明Cython类型的地方添加*.pxd文件。在setup.py中,我仍然添加 from setuptools import setup from Cython.Build import cythonize setup( ext_modules = cythonize( "A.py", compiler_directives={'language_level' :

我只是读了这本书,我不确定我是否理解正确。听起来好像我可以保持所有Python文件的原样,在声明Cython类型的地方添加
*.pxd
文件。在setup.py中,我仍然添加

from setuptools import setup
from Cython.Build import cythonize

setup(
    ext_modules = cythonize(
        "A.py",
        compiler_directives={'language_level' : "3"}
      )
)
当我运行
python setup.py build\u ext--inplace
时,它实际上构建了.so文件


当我创建sdist/bdist,将它们上传到PyPI,而用户没有匹配的平台时会发生什么?当然,他们会下载sdist。我猜pip/setuptools会自动尝试编译扩展模块(A.py),我想如果这样做行得通,就可以了。但如果cythonize失败了呢?它还会安装包并使用纯Python代码吗?

我不这么认为。我相信
setup.py中的故障会完全中止安装


你可以试着去做,但有一点是行不通的。较旧的
设置工具可能存在问题

Hm。。。然后,我想,可以使用环境变量来添加/不添加扩展。对于源发行版,不会添加它,因此不会构建它。对于控制盘,我可以控制环境变量,从而构建它。创建控制盘后,设置设置选项无关紧要,因为.so已在控制盘中。那可能行,对吧?是的,看起来可行。