python - 用于可编辑依赖项更改的 pip egg 名称

标签 python python-2.7 pip

我有一个自定义依赖项,我在 requirements.txt 中使用 -e 标志指定:

...
-e git+git@git.myproject/projectname.git@master#egg=projectname-master
...

有了这个 pip install -r requirements.txt 就可以正常工作了。

pip freeze 给出以下输出:

...
-e git+git@git.myproject/projectname.git@b3d61ba97029316b5790a6d0328d59816262153d#egg=projectname-master
...

这是我所期望的。

当运行pip install --upgrade -r requirements.txt然后运行pip freeze时,我得到以下输出。

...
-e git+git@git.myproject/projectname.git@4c58322b1750d6c3d2bde67f8a1657a09c45dbb9#egg=projectname-origin_HEAD
...

请注意,此处的鸡蛋名称已更改。

pip freeze 的输出写入 requirements.txt 文件并运行 pip install -r requirements 时,出现以下错误:

Could not find a version that satisfies the requirement projectname-master (from projectname-origin-HEAD->-r requirements.txt (line 13)) (from  versions: )

如何阻止 pip 在升级时弄乱 eggname。这是必要的,因为我希望能够通过将 pip freeze 的输出写入文件来锁定提交。

最佳答案

对于这种包你不应该依赖 pip freeze。它总是会尝试添加一个提交 SHA1 并有效地固定你的包。如果你想更新一个包,你应该在你的 requirements.txt 文件中编辑 git URL 并删除所有对特定提交的引用,只将它指向分支名称或标签。这会降低性能,因为每次评估 requirements.txt 文件时都必须检查最新版本。

例如只需将其保存在您的 requirements.txt 中:

-e git+git@git.myproject/projectname.git@master#egg=projectname

请注意,我从 #egg 中删除了 -master:我认为将 egg 命名为与项目名称不同的名称不是一个好主意。当我尝试使用另一个名称然后使用包的 setup.py 中指定的名称时,我在 pip install teh 包时收到这样的警告:

Running setup.py -> Warning::egg_info 包 projectname-master 为项目名称 projectname 生成了元数据。修复您的#egg=projectname-master 片段。

更多细节可以在这里找到: http://codeinthehole.com/tips/using-pip-and-requirementstxt-to-install-from-the-head-of-a-github-branch/

这里: https://pip.readthedocs.io/en/1.1/requirements.html

关于python - 用于可编辑依赖项更改的 pip egg 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34881247/

相关文章:

python 映射/减少 : emit multiple keys values from single map lambda

python - 根据最大长度和最大总和排序

python - 我如何减少我正在分析巨大数据集并使用 plotly 绘图的 Jupyter Notebook 的大小?

python-2.7 - 如何在没有 pip 或任何包管理器的情况下安装 Pandas 和依赖项

python-2.7 - 为什么 scikit-learn 的最近邻似乎没有返回正确的余弦相似距离?

python - 如何在 Python 中从此 JSON 中获取 'url' 变量

python - Windows 7 上的威夫利?

python - 如何查看安装的 pip 包大小?

python - 使用 pip 安装 cx_Oracle 时遇到问题

python - 如何在服务器上没有 root 访问权限的情况下完全安装 numpy?