如何使 cython 成为 pip 安装的要求?
How to make cython a requirement for a pip install?
创建 Python 包并将其上传到 pypi
时,它会自动安装 install_requires
下 setup.py
文件中的要求,例如
from distutils.core import setup
setup(
name = 'a_package',
packages = ['a_package'],
install_requires=['another_package']
)
当包有cython扩展(和.pyx
文件而不是.c
/.cpp
文件)时,setup.py
文件将需要导入cython来创建可安装的扩展,例如
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
setup(
name = 'a_package',
packages = ['a_package'],
install_requires=['another_package'],
cmdclass = {'build_ext': build_ext},
ext_modules = [Extension('the_extension', sources=['a_file.pyx'])]
)
但是由于 Cython 是在执行 setup
部分之前导入的,因此当尝试通过 pip
从从 pypi
下载的源代码(而不是从 wheel)安装此包时,它将因无法导入而安装失败 cython
,因为尚未达到要求的部分。
我想知道可以做些什么来确保 pip
从 pypi
安装此软件包将在尝试导入它之前安装 cython
。添加带有 cython
的 requirements.txt
似乎不会为从 pypi
.
下载的文件添加自动安装要求
现在,我意识到在 pip install thispackage
之前 pip install cython
是可能的,但我想知道是否有更好的修复方法可以直接从 [=12] 安装包和 cython =] 当无法 运行 附加命令时(无需上传 .c.
文件并调整 setup.py
文件以使用它们而不是 .pyx
)。
您所描述的是 "build time dependency",而这恰恰是为“PEP 518 -- Specifying Minimum Build System Requirements for Python Projects”创建的用例。
您可以通过添加 pyproject.toml
文件将 cython
指定为构建时依赖项,例如:
[build-system]
requires = ["cython"]
然后当使用 pip
的现代版本(或另一个 PEP 518 兼容安装程序)安装你的包时,cython
将在你的 setup.py
脚本被安装到构建环境之前运行.
创建 Python 包并将其上传到 pypi
时,它会自动安装 install_requires
下 setup.py
文件中的要求,例如
from distutils.core import setup
setup(
name = 'a_package',
packages = ['a_package'],
install_requires=['another_package']
)
当包有cython扩展(和.pyx
文件而不是.c
/.cpp
文件)时,setup.py
文件将需要导入cython来创建可安装的扩展,例如
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
setup(
name = 'a_package',
packages = ['a_package'],
install_requires=['another_package'],
cmdclass = {'build_ext': build_ext},
ext_modules = [Extension('the_extension', sources=['a_file.pyx'])]
)
但是由于 Cython 是在执行 setup
部分之前导入的,因此当尝试通过 pip
从从 pypi
下载的源代码(而不是从 wheel)安装此包时,它将因无法导入而安装失败 cython
,因为尚未达到要求的部分。
我想知道可以做些什么来确保 pip
从 pypi
安装此软件包将在尝试导入它之前安装 cython
。添加带有 cython
的 requirements.txt
似乎不会为从 pypi
.
现在,我意识到在 pip install thispackage
之前 pip install cython
是可能的,但我想知道是否有更好的修复方法可以直接从 [=12] 安装包和 cython =] 当无法 运行 附加命令时(无需上传 .c.
文件并调整 setup.py
文件以使用它们而不是 .pyx
)。
您所描述的是 "build time dependency",而这恰恰是为“PEP 518 -- Specifying Minimum Build System Requirements for Python Projects”创建的用例。
您可以通过添加 pyproject.toml
文件将 cython
指定为构建时依赖项,例如:
[build-system]
requires = ["cython"]
然后当使用 pip
的现代版本(或另一个 PEP 518 兼容安装程序)安装你的包时,cython
将在你的 setup.py
脚本被安装到构建环境之前运行.