Alf*_*lfe 377 python pip github requirements.txt
我已经使用该命令安装了一个库
pip install git+git://github.com/mozilla/elasticutils.git
Run Code Online (Sandbox Code Playgroud)
它直接从Github存储库安装它.这工作正常,我希望在我的requirements.txt
.我看其他的票像这样但这并没有解决我的问题.如果我把类似的东西
-f git+git://github.com/mozilla/elasticutils.git
elasticutils==0.7.dev
Run Code Online (Sandbox Code Playgroud)
在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))
Run Code Online (Sandbox Code Playgroud)
需求文件的文档没有提到使用git+git
协议说明符的链接,因此可能不支持.
有没有人能解决我的问题?
YPC*_*ble 320
通常你的requirements.txt
文件看起来像这样:
package-one==1.9.4
package-two==3.7.1
package-three==1.0.1
...
Run Code Online (Sandbox Code Playgroud)
要指定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
Run Code Online (Sandbox Code Playgroud)
master
):git+git://github.com/path/to/package-two@master#egg=package-two
Run Code Online (Sandbox Code Playgroud)
0.1
):git+git://github.com/path/to/package-two@0.1#egg=package-two
Run Code Online (Sandbox Code Playgroud)
3.7.1
):git+git://github.com/path/to/package-two@releases/tag/v3.7.1#egg=package-two
Run Code Online (Sandbox Code Playgroud)
请注意,#egg=package-two
此处不是注释,而是显式声明包名称
这篇博文有关于该主题的更多讨论.
sta*_*alk 286
"Editable"包语法可用于requirements.txt
从各种VCS(git,hg,bzr,svn)导入包:
-e git://github.com/mozilla/elasticutils.git#egg=elasticutils
Run Code Online (Sandbox Code Playgroud)
此外,可以指向特定的提交:
-e git://github.com/mozilla/elasticutils.git@000b14389171a9f0d7d713466b32bc649b0bed8e#egg=elasticutils
Run Code Online (Sandbox Code Playgroud)
qff*_*qff 163
requirements.txt
从pip 7.0:1开始,允许以下方式指定git存储库中包的依赖性
[-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
Run Code Online (Sandbox Code Playgroud)
对于Github,这意味着你可以做(注意省略-e
):
git+git://github.com/mozilla/elasticutils.git#egg=elasticutils
Run Code Online (Sandbox Code Playgroud)
为什么额外的答案?
我-e
对其他答案中的旗帜感到有些困惑,所以这是我的澄清:
的-e
或--editable
标志表示该包是安装在<venv path>/src/SomeProject
并因此没有在深埋<venv path>/lib/pythonX.X/site-packages/SomeProject
它否则将被放置英寸2
文档
osa*_*osa 74
首先,安装git+git
或git+https
以任何方式安装.安装项目kronok
分支的示例brabeion
:
pip install -e git+https://github.com/kronok/brabeion.git@12efe6aa06b85ae5ff725d3033e38f624e0a616f#egg=brabeion
Run Code Online (Sandbox Code Playgroud)
其次,用来pip freeze > requirements.txt
在你的身上找到正确的东西requirements.txt
.在这种情况下,你会得到
-e git+https://github.com/kronok/brabeion.git@12efe6aa06b85ae5ff725d3033e38f624e0a616f#egg=brabeion-master
Run Code Online (Sandbox Code Playgroud)
三,测试结果:
pip uninstall brabeion
pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)
Tri*_*onX 16
自pip v1.5
(2014年1月1日发布:CHANGELOG,PR)以来,您还可以指定git repo的子目录来包含您的模块.语法如下所示:
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
Run Code Online (Sandbox Code Playgroud)
注意:作为一个pip模块作者,理想情况下,如果可以的话,您可能希望将模块发布在自己的顶级仓库中.然而,此功能对于在子目录中包含python模块的一些预先存在的repos很有用.如果它们没有发布到pypi,您可能会被迫以这种方式安装它们.
看起来这也是一种有效的格式:
gym-tictactoe @ git+https://github.com/haje01/gym-tictactoe.git@84e22fc28fe192ba0040bdd56a697f63d3d4a3d5
Run Code Online (Sandbox Code Playgroud)
如果您执行pip install "git+https://github.com/haje01/gym-tictactoe.git"
,然后查看通过运行安装的内容pip freeze
,您将看到以此格式描述的包,并且可以将其复制并粘贴到requirements.txt中。
这些答案都不适合我。唯一有效的是:
git+https://github.com/path_to_my_project.git
Run Code Online (Sandbox Code Playgroud)
没有“e”,没有双“git”,也不需要以前的安装。
我发现让 pip3(v9.0.1,由 Ubuntu 18.04 的包管理器安装)来实际安装我告诉它安装的东西有点棘手。我发布这个答案是为了节省遇到此问题的任何人的时间。
将其放入requirements.txt 文件失败:
git+git://github.com/myname/myrepo.git@my-branch#egg=eggname
Run Code Online (Sandbox Code Playgroud)
我所说的“失败”是指,当它从 Git 下载代码时,它最终安装了 PyPi 上的原始版本代码,而不是该分支上的存储库中的代码。
但是,安装提交而不是分支名称是可行的:
git+git://github.com/myname/myrepo.git@d27d07c9e862feb939e56d0df19d5733ea7b4f4d#egg=eggname
Run Code Online (Sandbox Code Playgroud)
Github 有一个 zip 端点,在我看来它比使用 git 协议更可取。优点是:
#egg=<project name>
您通常希望 requirements.txt 条目看起来像这样,例如没有-e
前缀:
https://github.com/org/package/archive/1a58aa586efd4bca37f2cfb9d9348958986aab6c.zip
Run Code Online (Sandbox Code Playgroud)
从主分支安装:
https://github.com/org/package/archive/main.zip
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
153017 次 |
最近记录: |