int*_*ect 5 python distutils pip cython pypi
有一个带有setup.py的Python包,可以这样读取:
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
setup(
name = 'fastahack',
ext_modules=[
Extension("fastahack.cfastahack",
sources=["fastahack/cfastahack.pyx", "lib/Fasta.cpp", "lib/split.cpp"],
libraries=["stdc++"],
include_dirs=["lib/"],
language="c++"),
],
package_data = {'lib': ['*.pyx', "*.c", "*.h", "README.rst"]},
package_dir = {"fastahack": "fastahack"},
cmdclass = {'build_ext': build_ext},
packages = ['fastahack', 'fastahack.tests'],
author = "Brent Pedersen",
author_email="bpederse@gmail.com",
#test_suite='nose.collector'
)
Run Code Online (Sandbox Code Playgroud)
如果未安装Cython,则无法导入此setup.py.据我所知,导入setup.py是像pip这样的工具如何找出包的依赖关系.我想设置这个包,以便它可以上传到PyPI,事实上它依赖于Cython注意到,所以当你尝试"pip install fastahack"时,或当你试图"下载"时,将下载并安装Cython pip install"直接来自Git存储库.
我如何打包此模块,以便在未安装Cython时从Internet正确安装?始终使用最新版本的Cython将是一个加号.
您可以使用PEP-518项目规范将 Cython 指定为构建依赖项。
在文件中pyproject.toml
(与 位于同一目录中setup.py
)插入:
[build-system]
requires = ["setuptools", "wheel", "Cython"]
Run Code Online (Sandbox Code Playgroud)
然后将在构建包之前安装 Cython。
请注意,(当前)如果您将软件包本地安装为可编辑(即使用或),则需要传递到 v64支持使用 pyproject.toml 构建进行可编辑安装--no-use-pep517
setuptools pip install
--editable
-e