用--target安装的软件包如何进行Pip freeze?

24
我想为一个小的Python项目使用管理依赖模块的方法:http://blog.zoomeranalytics.com/pip-install-t/ 简而言之,我会执行以下操作:
cd myproject pip install --target ./pip-libs --upgrade -r requirements.txt
然后将./pip-libs添加到PYTHONPATH并运行我的脚本。
这看起来很不错,但我喜欢使用pip freeze,它不允许我做像 pip freeze --target pip-libs
这样查看安装在文件夹中的软件包。当然,我可以查看里面的内容,但有没有一种标准的方法来显示在--target文件夹中安装的软件包?我唯一能想到的方法是使用ls pip-libs,然后玩grep、awk...这似乎不对。
我不确定是否有办法,也许这不是一个好主意,或者我应该请求pip的这种功能。
Python 2.7.9。
4个回答

17

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

pip freeze --path ./pip-libs > requirements.txt

不确定pip从何时开始支持此功能,但在此之前我需要更新我的pip版本 - klenwell

3

这应该是可行的

PYTHONPATH=./pip-libs pip freeze

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或类似工具,对“Location”行进行grep,然后返回软件包名称。

另一种选择是只查看安装文件夹中的文件夹,并手动确定这些包是从哪里来的...例如:

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


2
pip freeze --path [path location]

对于当前文件夹:

pip freeze --path .

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接