我刚开始使用 setuptools 和 viralenv。我的软件包需要只能从 GitHub 获得的最新 python-gearman。PyPI 上的 python-gearman 版本是旧版本。Github 源代码与 setuptools 兼容,例如有 setup.py 等。有没有办法让 setuptools 下载并安装新版本,而不是在 PyPI 上查找并安装旧版本?
仅供参考,新的蟒蛇齿轮人是 http://github.com/mtai/python-gearman
Vanilla setuptools不支持直接从 git 存储库下载,但是您可以使用该页面的 下载源代码链接之一,比如:
setuptools
easy_install http://github.com/mtai/python-gearman/tarball/master
关键是告诉 easy _ install 软件包可以在哪里下载。在这种特殊情况下,可以在 URL http://github.com/mtai/python-gearman/tarball/master中找到它。但是,这个链接本身不会起作用,因为 easy _ install 不能仅仅通过查看 URL 就知道它将获得什么。
通过将其更改为 http://github.com/mtai/python-gearman/tarball/master#egg=gearman-2.0.0beta,easy _ install 将能够识别软件包名称及其版本。
最后一步是将 URL 添加到您的软件包的依赖关系链接中,例如:
setup( ... dependency_links = ['http://github.com/mtai/python-gearman/tarball/master#egg=gearman-2.0.0beta'] )
现在,当您的软件包被安装时,easy _ install 会发现有一个“ gearman 2.0.0 beta”可以从这个 URL 下载,如果您在依赖项中指定“ gearman > = 2.0.0 beta”,那么您可以在 PyPI 上选择它。.
(通常情况下,这种方法是在 PyPI 页面上包含一个指向可下载源代码的链接; 在这种情况下,如果 gearman 包的作者包含了上面这样的链接,那么您已经设置好了。通常,人们用‘ myproject-dev’标记开发版本,然后人们使用‘ myproject > = somever,= = dev’的要求,这样如果没有更高的包,easy _ install 就会尝试签出或下载这个版本。)
使用 pip时需要指定 --process-dependency-links。请注意,依赖链接处理已被弃用,将在以后的版本中删除。
pip
--process-dependency-links
您可以使用 pip install protocol+location[@tag][#egg=Dependency]格式使用 pip 从源代码直接安装。
pip install protocol+location[@tag][#egg=Dependency]
pip install git+https://github.com/username/repo.git pip install git+https://github.com/username/repo.git@MyTag pip install git+https://github.com/username/repo.git@MyTag#egg=ProjectName
pip install hg+https://hg.myproject.org/MyProject/
pip install svn+svn://svn.myproject.org/svn/MyProject
pip install bzr+http://bzr.myproject.org/MyProject/trunk
支持以下协议: [+git, +svn, +hg, +bzr]
[+git, +svn, +hg, +bzr]
@tag允许您指定要签出的特定版本/标记。
@tag
#egg=name允许您指定项目作为其他项目的依赖项。
#egg=name
顺序必须始终是 @tag#egg=name。
@tag#egg=name
您还可以通过将协议更改为 SSH (ssh://)并添加适当的用户(git@)来从私有存储库安装:
ssh://
git@
git+ssh://git@github.com/username/my_private_repo
您还可以使用用户名/密码从私有存储库进行安装。
git+https://<username>:<password>@github.com/<user>/<repo>.git
Github 提供了创建可循环的 个人 OAuth 令牌的能力
git+https://<oauth token>:x-oauth-basic@github.com/<user>/<repo>.git
requirements.txt用于指定项目依赖项:
requirements.txt
要求
package1 package2==1.0.2 package3>=0.0.4 git+https://github.com/username/repo.git
这些软件包不是自动安装的,必须使用 pip -r requirements.txt命令安装。
pip -r requirements.txt
需求文件可以包括其他需求文件:
需求-文档
sphinx -r requirements-dev.txt
需求-dev. txt
some-dev-tool -r requirements.txt
需求文件可以使用以下命令安装 setup.py中指定的依赖项:
setup.py
-e .
setup.py也可以使用与上面相同的语法从存储库安装,但是使用 这个答案中提到的 dependency_links值。
dependency_links
Https://pip.pypa.io/en/latest/user_guide.html#installing-packages Https://pip.pypa.io/en/latest/reference/pip_install.html
因为我只是做了同样的事情,我找到了另一种方法来做到这一点,因为 pip的 --process-dependency-links是计划在 pip19.0根据 此评论删除。
pip18.1包括以下特性
允许将 PEP 508 URL 要求用作依赖项。
从 PEP 508的 描述来看,这种 URL 依赖的语法如下:
一个最小的基于 URL 的查找: Pip@https://github.com/pypa/pip/archive/1.3.1.zip#sha1=da9234ee9982d4bbb3c72346a6de940a148ea686
一个最小的基于 URL 的查找:
Pip@https://github.com/pypa/pip/archive/1.3.1.zip#sha1=da9234ee9982d4bbb3c72346a6de940a148ea686
所以在你的 setup.py里
setup( ... install_requires = [ ... 'python-gearman @ https://github.com/mtai/python-gearman/archive/master.zip' ... ] )
注意,该链接是一个归档文件,也可以是存储库的特定版本或分支,如 在这个答案中所述。此外,请参阅与其他存储库主机一起工作的答案。
据我所知,更新依赖项的最简单方法是在从包的目录安装包时使用 pip install -I .。
pip install -I .