我正在开发一个项目,其中一个依赖项实际上是一个不在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
轻松安装我的库
答案 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'],
...
)