如何使我的Python包依赖于远程轮,而不是存储在PyPI存储库中?
我正在为我的组织在Windows上开发一个Python项目。我希望能够以干净简单的方式将其分发给其他人安装和使用它。
我的项目的一个依赖是MySQL-python包。 PyPI存储库(AFAIK)中没有此软件包的预编译版本。在Windows上编译软件包需要Visual Studio,我不能假设它将在所有目标计算机上可用。
到目前为止,我一直在使用Christoph Gohlke在http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python友情提供的这个包的预编译轮。
我可以通过下载the package并运行pip install MySQL_python-1.2.5-cp27-none-win_amd64.whl
,轻松地在我的开发virtualenv中手动安装此软件包。
但是,我无法弄清楚如何在我的项目中引用此软件包,以便任何使用我的项目的人自动下载和安装它。
基于this document,似乎是setuptools' install_requires
关键字不合适:
install_requires是“抽象”要求的列表,即只是 名称和版本限制,不确定在哪里 依赖性将从(即从什么索引或来源)实现
同一文档似乎表明requirements.txt
文件适合引用备用PyPI索引,如this answer中所示。这表明这是requirements.txt
:
-i http://dist.repoze.org/zope2/2.10/simple
zopelib
将等同于以下命令行pip install zopelib --index-url http://dist.repoze.org/zope2/2.10/simple
。但是,Christopher Gohlke的网站不是PyPI回购,所以这对我不起作用。似乎--find-links
选项有意义,但是当我尝试
pip install MySQL-python --find-links http://www.lfd.uci.edu/~gohlke/pythonlibs/zpx9vnfu/ --trusted-host www.lfd.uci.edu --no-index
它也不起作用:
Ignoring indexes: https://pypi.python.org/simple
Collecting MySQL-python
Could not find a version that satisfies the requirement MySQL-python (from versions: )
No matching distribution found for MySQL-python
如果根本不可能要求pip寻找远程包,我考虑下载滚轮文件并将其检入我项目的Git存储库。如果软件包是公开发布的,那么这可能会产生许可问题,但对于内部项目应该是可接受的(对吗?)。但是,虽然此命令行有效:pip install MySQL-python --find-links .\wheelhouse\ --no-index
,但我似乎无法以同样的方式将--find-links
参数合并到requirements.txt
中。这不起作用:
--find-links .\wheelhouse
--no-index
MySQL-python==1.2.5
pip install -r requirements.txt
导致:
You are using pip version 7.0.1, however version 7.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting MySQL-python==1.2.5 (from -r .\requirements.txt (line 3))
Could not find a version that satisfies the requirement MySQL-python==1.2.5 (from -r .\requirements.txt (line 3)) (from versions: )
No matching distribution found for MySQL-python==1.2.5 (from -r .\requirements.txt (line 3))
我已经尝试使用已下载滚轮的文件夹的路径:
file:///C:\Users\blaffoy\my_project\wheelhouse
和C:\Users\blaffoy\my_project\wheelhouse
也不会工作。
我尝试过的另一个选项,虽然我认为可行,但是可以设置我自己的devpi服务器。如果可能的话,我想避免这种情况,因为它似乎为我组织中的某个人提供了持续的维护任务来照顾它。
欢迎任何建议或想法。这似乎应该相对简单,所以我想我可能会遗漏一些明显的东西。
---编辑---
我忘了提到我已经尝试过setuptools' dependency_links
关键字也是如此。我无法通过远程链接到Christopher Gohlke的网站或指向本地路径。我还在某处读过这不被认为是好的做法,may be deprecated。