如何在陈述一个requirements.txt直接GitHub的源(How to state in

2019-09-03 15:57发布

我已经安装使用命令库

pip install git+git://github.com/mozilla/elasticutils.git

直接从Github上库安装。 这工作得很好,我想在我的这种依赖性requirements.txt 。 我看其他的票像这样但这并没有解决我的问题。 如果我把喜欢的东西

-f git+git://github.com/mozilla/elasticutils.git
elasticutils==0.7.dev

requirements.txt文件, pip install -r requirements.txt在输出结果如下:

Downloading/unpacking elasticutils==0.7.dev (from -r requirements.txt (line 20))
  Could not find a version that satisfies the requirement elasticutils==0.7.dev (from -r requirements.txt (line 20)) (from versions: )
No distributions matching the version for elasticutils==0.7.dev (from -r requirements.txt (line 20))

该规定文件的文件没有提到使用链接git+git协议说明符,所以也许这仅仅是不支持的。

是否有人有我的问题的解决方案?

Answer 1:

“可编辑”包语法可被用requirements.txt到从各种导入包VCS(GIT,HG,BZR,SVN) :

-e git://github.com/mozilla/elasticutils.git#egg=elasticutils

另外,也可以指向特定的承诺:

-e git://github.com/mozilla/elasticutils.git@000b14389171a9f0d7d713466b32bc649b0bed8e#egg=elasticutils


Answer 2:

通常情况下你requirements.txt文件看起来是这样的:

package-one==1.9.4
package-two==3.7.1
package-three==1.0.1
...

要指定GitHub库,你不需要package-name==约定。

下面更新的例子package-two使用GitHub库。 之间的文本@#表示包的细节。

指定提交哈希( 41b95ec在更新的情况下requirements.txt ):

package-one==1.9.4
git+git://github.com/path/to/package-two@41b95ec#egg=package-two
package-three==1.0.1

指定分支名称( master ):

git+git://github.com/path/to/package-two@master#egg=package-two

指定标签( 0.1 ):

git+git://github.com/path/to/package-two@0.1#egg=package-two

指定版本( 3.7.1 ):

git+git://github.com/path/to/package-two@releases/tag/v3.7.1#egg=package-two

需要注意的是#egg=package-two是不评论在这里,它是明确规定的包名

该博客文章对一些话题更多的讨论。



Answer 3:

requirements.txt允许在git仓库指定作为PIP的上的程序包的相关的以下方法7.0:1

[-e] git+git://git.myproject.org/SomeProject#egg=SomeProject
[-e] git+https://git.myproject.org/SomeProject#egg=SomeProject
[-e] git+ssh://git.myproject.org/SomeProject#egg=SomeProject
-e git+git@git.myproject.org:SomeProject#egg=SomeProject

对于Github上,这意味着你可以做(注意省略-e ):

git+git://github.com/mozilla/elasticutils.git#egg=elasticutils

为什么多余的答案吗?
我得到了某种程度上受到迷惑-e标志在其他的答案所以这里我澄清:

所述-e--editable标志表示该包被安装在<venv path>/src/SomeProject并且因此没有在深埋<venv path>/lib/pythonX.X/site-packages/SomeProject它否则将放置在2

文档

  • 1 https://pip.readthedocs.org/en/stable/reference/pip_install/#git
  • 2 https://pip.readthedocs.org/en/stable/reference/pip_install/#vcs-support


Answer 4:

首先,安装与git+gitgit+https ,在你知道的任何方式。 安装的例子kronok的的的分支brabeion项目:

pip install -e git+https://github.com/kronok/brabeion.git@12efe6aa06b85ae5ff725d3033e38f624e0a616f#egg=brabeion

二,使用pip freeze > requirements.txt让你的正确的事情requirements.txt 。 在这种情况下,你会得到

-e git+https://github.com/kronok/brabeion.git@12efe6aa06b85ae5ff725d3033e38f624e0a616f#egg=brabeion-master

三,测试结果如下:

pip uninstall brabeion
pip install -r requirements.txt


Answer 5:

由于PIP v1.5 ,(发布2014年1月1日: 更新日志 , PR ),你也可以指定一个git回购的子目录包含你的模块。 语法如下:

pip install -e git+https://git.repo/some_repo.git#egg=my_subdir_pkg&subdirectory=my_subdir_pkg # install a python package from a repo subdirectory

注:为PIP模块作者,理想情况下你可能想,如果你可以发布你的模块中它自己的顶级回购。 然而,这个功能对于一些包含子目录python模块现有的预回购很有帮助。 你可能会被迫这种方式安装他们,如果他们不会发布到PyPI中了。



文章来源: How to state in requirements.txt a direct github source