在setup.py中添加自定义wheel文件作为依赖项?

时间:2018-05-25 03:21:12

标签: python pip setuptools

我正在开发一个项目,其中一个依赖项实际上是一个不在pypi上的.whl(即我必须直接从作者下载轮子并pip直接安装它)。在我的setup.py文件中,有没有办法执行以下操作:

install_requires=[
    'library.whl',
    'matplotlib==2.2.2',
    'numpy==1.14.2',
    'opencv-python==3.4.0.12',
    'Pillow==5.1.0',
    'PyYAML==3.12',
],

或者这些行中的某些东西,因为它不在pypi上(我只会在library.whl文件中添加MANIFEST.in或其他东西)?如果没有,是否有建议的方法来处理这种情况?我最好在setup.py文件中解决此问题,以便我可以使用单个pip install轻松安装我的库

2 个答案:

答案 0 :(得分:1)

另一种方法是使用pip需求文件来安装依赖项。 requirement file指定每个库和所需的版本。您可以使用URL指向您的车轮。

示例:

http://host/path/to/library.whl
matplotlib==2.2.2
numpy==1.14.2
opencv-python==3.4.0.12
Pillow==5.1.0
PyYAML==3.12

只需在您的setup.py文件中指定“库”即可。

修改

最佳做法是拥有一个额外的PyPi服务器,如DevPi。并更改您的点configuration file以添加此存储库。当然,您的library.whl必须在此私人服务器中推送。

pip.conf的示例:

[global]
index-url = http://yourserver/group/user/

[install]
trusted-host = yourserver

[download]
trusted-host = yourserver

[list]
format = columns

您可能还需要配置.pypirc文件:

[distutils]
index-servers = pypi
                private

[pypi]
repository: http://pypi.python.org/pypi
username:your-username
password:your-password

[private]
repository: http://yourserver
username:your-login
password:your-password

这样你就可以在私人服务器上推送你的版本了:

python setup.py bdist_wheel upload -r private register -r private

答案 1 :(得分:0)

根据docs,您需要在设置参数中指定dependency_links

setup(
    ...
    dependency_links=['http://github.com/user/repo/tarball/master#egg=package-1.0'],
    ...
)