Leo*_*rdo 6 python git pip virtualenv requirements.txt
我正在使用pip和一个requirements.txt文件来处理我的virtualenv中的python包.我有一个我从Github安装的特定包,所以在我的文件中我有:
git+ssh://git@github.com/myuser/mypackage.git#egg=mypackage
Run Code Online (Sandbox Code Playgroud)
由于我经常使用这个包,我需要重新安装它,但是:
pip install -r requirements.txt让我回来
Requirement already satisfied (use --upgrade to upgrade)...
Run Code Online (Sandbox Code Playgroud)
对于具有新版本的requirements.txt中的所有包.
如果我运行pip install -r requirements.txt --upgrade它尝试升级我的所有包(我不想要),但我只想升级mypackage.在requirements.txt中,我试图添加一个特定的提交,如下所示:
git+ssh://git@github.com/myuser/mypackage.git@733c5b616da27cba14478c24b#egg=mypackage
Run Code Online (Sandbox Code Playgroud)
但是,当我再次运行pip时它抛出:
Requirement already satisfied (use --upgrade to upgrade)..bla bla bla
Run Code Online (Sandbox Code Playgroud)
题:
mypackage?#egg=mypackage吗?之所以会这样,Requirement already satisfied是因为如果您未通过--upgrade或-U(简写),则该软件包(如果已安装)不会被修改。
(命令的这一部分进行了很多讨论。在此处查看前4个问题)
有没有一种方法mypackage可以使用requirements.txt文件仅升级特定软件包?
mypackage告诉它升级时,您只需要指定一点即可。如果只想更新请求,则pip命令为:
pip install --upgrade requests
Run Code Online (Sandbox Code Playgroud)
同样,要从git存储库更新,您需要执行以下操作:
pip install --upgrade git+ssh://git@github.com/myuser/mypackage.git#egg=mypackage
Run Code Online (Sandbox Code Playgroud)
由于这是一个很长的URL,因此我建议您按照@daphtdazz的建议进行操作,请使用多个需求文件,如下所示:
requirements.txt
requests~=2.12.3
simplejson~=3.10.0
-r git_requirements.txt
Run Code Online (Sandbox Code Playgroud)
git_requirements.txt
git+ssh://git@github.com/myuser/mypackage.git#egg=mypackage
Run Code Online (Sandbox Code Playgroud)
另外,我建议您对shell使用shell别名以减轻键入负担。
alias pip_git_upgrade="pip install --upgrade -r git_requirements.txt"
Run Code Online (Sandbox Code Playgroud)
我需要指定#egg=mypackage吗?
引用pip的官方文档:
任何URL都可以使用#egg = name语法来明确声明项目名称。
基本上,使用#egg=mypackage是个好主意,因为您要使项目名称明确。
| 归档时间: |
|
| 查看次数: |
1686 次 |
| 最近记录: |