当创建Python包并将其上传到 时,它会自动安装下面文件pypi中的要求,例如setup.pyinstall_requires
from distutils.core import setup\nsetup(\n name = 'a_package',\n packages = ['a_package'],\n install_requires=['another_package']\n)\nRun Code Online (Sandbox Code Playgroud)\n\n当包具有 cython 扩展名(并且.pyx是文件而不是.c/.cpp文件)时,该setup.py文件将需要导入 cython 来创建可安装的扩展名,例如
from distutils.core import setup\nfrom distutils.extension import Extension\nfrom Cython.Distutils import build_ext\nsetup(\n name = 'a_package',\n packages = ['a_package'],\n install_requires=['another_package'],\n cmdclass = {'build_ext': build_ext},\n ext_modules = [Extension('the_extension', sources=['a_file.pyx'])]\n)\nRun Code Online (Sandbox Code Playgroud)\n\n但是由于 Cython 是在执行该部分之前导入的,因此当尝试从 从 下载的源(而不是从轮子)setup安装此包时 ,它将由于无法导入而安装失败,因为它尚未到达带有 的部分还没有达到要求。pippypicython
我\xe2\x80\x99m想知道如何才能确保在尝试导入pip此软件包之前pypi安装该软件包。cython添加requirements.txtwithcython似乎不会为从 . 下载的文件添加自动安装要求pypi。
现在,我意识到\xe2\x80\x99s可能就在pip install cython之前pip install thispackage,但我\xe2\x80\x99m想知道是否有\xe2\x80\x99s一个更好的修复,允许直接从pypi它开始安装包和cython \xe2\x80\x99s 无法运行附加命令(无需上传文件.c.并调整setup.py文件以使用它们而不是.pyx)。
您所描述的是“构建时间依赖性”,这正是创建用例“ PEP 518 - 指定 Python 项目的最低构建系统要求”的原因。
您可以cython通过添加如下文件来指定构建时依赖项pyproject.toml:
[build-system]
requires = ["cython"]
Run Code Online (Sandbox Code Playgroud)
然后,当使用现代版本pip(或另一个 PEP 518 兼容安装程序)安装软件包时,cython将在运行脚本之前将其安装到构建环境中setup.py。
| 归档时间: |
|
| 查看次数: |
2962 次 |
| 最近记录: |