如何使Python项目依赖于第三方网站中的包?

时间:2016-01-07 10:53:37

标签: python pip setuptools

如何使我的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\wheelhouseC:\Users\blaffoy\my_project\wheelhouse也不会工作。

我尝试过的另一个选项,虽然我认为可行,但是可以设置我自己的devpi服务器。如果可能的话,我想避免这种情况,因为它似乎为我组织中的某个人提供了持续的维护任务来照顾它。

欢迎任何建议或想法。这似乎应该相对简单,所以我想我可能会遗漏一些明显的东西。

---编辑---

我忘了提到我已经尝试过setuptools' dependency_links关键字也是如此。我无法通过远程链接到Christopher Gohlke的网站或指向本地路径。我还在某处读过这不被认为是好的做法,may be deprecated

0 个答案:

没有答案