使用--target安装的软件包的pip冻结

Bar*_*zGo 16 python pip virtualenv python-2.7

我想用这个管理依赖模块的小型Python项目:http: //blog.zoomeranalytics.com/pip-install-t/

简而言之,我会这样做:

cd myproject

pip install --target ./pip-libs --upgrade -r requirements.txt

然后将./pip-libs添加到PYTHONPATH并运行我的脚本.

这似乎但我喜欢使用pip冻结,它不允许我做任何事情

pip freeze --target pip-libs

查看文件夹中安装的软件包.当然,我可以看看里面,但是使用--target显示安装在文件夹中的软件包的标准方法是什么?我能想到的唯一方法就是做lspip-libs然后玩grep,awk ......看起来不对.

我不确定是否有办法,也许这不是一个好主意,或者我应该请求pip这样的功能.

Python 2.7.9.

小智 9

聚会有点晚了,但我遇到了同样的问题,这似乎解决了它。

pip freeze --path ./pip-libs > requirements.txt
Run Code Online (Sandbox Code Playgroud)


Jmo*_*ons 3

注意 - 这个答案是在 2016 年给出的,当时是正确的:--path 参数是在 2019 年的 v19-2 中添加的。因此,如果您的版本在 19 之前,您可能应该升级。请参阅https://pip.pypa.io/en/stable/news/#v19-2

不幸的是,你不能用 来做到这一点pip freeze。文档说pip install安装到目标文件夹中,但它仍在您的路径中。因此pip freeze只显示安装了哪些软件包,而不显示在特定位置安装了哪些软件包。

您可以查看pip show其中包含有关它们安装位置的信息(请参阅https://pip.pypa.io/en/stable/reference/pip_show/ ,但您必须编写一些 sed/awk 或类似的内容才能执行 grep在“位置”行上,然后返回并获取包名称。

另一种选择是仅查看安装文件夹中的文件夹,然后手动找出其中的软件包......类似:

ls ./pip-libs | grep -v .dist-info