ChatGPT解决这个技术问题 Extra ChatGPT

pip 在哪里安装它的包?

我激活了一个安装了 pip 的 virtualenv。我做了

pip3 install Django==1.8

和 Django 成功下载。现在,我想打开 Django 文件夹。文件夹在哪里?

通常它会在“下载”中,但我不确定如果我在 virtualenv 中使用 pip 安装它会在哪里。

可以通过 CLI 参数、环境变量或配置文件覆盖安装包的目录吗?

P
Peter Mortensen

pip show <package name> 将提供 Windows 和 macOS 的位置,我猜是任何系统。 :)

例如:

> pip show cvxopt
Name: cvxopt
Version: 1.2.0
...
Location: /usr/local/lib/python2.7/site-packages

在 Mac 上,这向我展示了一个包含 awscli 源代码的目录,但没有二进制文件。 :/
正确,但要完全符合所提出的问题,应该是 pip3 show <package name>
我在 Windows 上使用 python 3.6,“pip”指的是 python 3 的 pip。我不需要指定“pip3”。
@CoryKlein 而不是 site-packages/,我在 ~/Library/Python/3.7/bin/ 中找到了它
在 ubuntu 18.04 上运行良好
k
khampson

pipvirtualenv 一起使用时,通常会将软件包安装在路径 <virtualenv_name>/lib/<python_ver>/site-packages 中。

例如,我使用 Python 2.7 创建了一个名为 venv_test 的测试虚拟环境,django 文件夹位于 venv_test/lib/python2.7/site-packages/django 中。


有时您可能不知道 virtualenv 名称/路径,例如与 Jupyterhub/binderhub 生成的资源一起使用。当 pip show 什么都不做时,我找到了方法 #1 here。简而言之,它包括输入适当的 python 控制台并键入 help("module_name"),其中 module_name 替换为您感兴趣的实际模块名称。您可以在 python 控制台中使用 help("modules") 查看已安装的模块。
您以哪种方式构建 virtualenv?我正在使用 conda 创建我的虚拟环境,而 pip3 没有在您提到的文件夹中安装软件包
当时(大约 4 年前),我使用的是 virtualenv 和 Python 2.x。现在,我正在使用 venv 和 Python 3.5.x。不过,我仍然发现相同的通用文件夹结构。使用 Anaconda,这是一个精心策划的、独特的分布,因此它可能会以不同的方式构建事物,至少部分是这样。
其他一些答案提供了更通用的方法来定位包位置。
P
Peter Mortensen

pip list -v 可用于列出软件包的安装位置,在 https://pip.pypa.io/en/stable/news/#b1-2018-03-31 中介绍

使用“-v”选项运行 list 命令时显示安装位置。 (#979)

>pip list -v
Package                  Version   Location                                                             Installer
------------------------ --------- -------------------------------------------------------------------- ---------
alabaster                0.7.12    c:\users\me\appdata\local\programs\python\python38\lib\site-packages pip
apipkg                   1.5       c:\users\me\appdata\local\programs\python\python38\lib\site-packages pip
argcomplete              1.10.3    c:\users\me\appdata\local\programs\python\python38\lib\site-packages pip
astroid                  2.3.3     c:\users\me\appdata\local\programs\python\python38\lib\site-packages pip
...

此功能在 pip 10.0.0b1 中引入。在 Ubuntu 18.04(仿生海狸)上,与 sudo apt install python-pipsudo apt install python3-pip 一起安装的 pippip3 是没有此功能的 9.0.1。

检查 https://github.com/pypa/pip/issues/5599 以了解升级 pippip3 的合适方法。


不幸的是,这在 Ubuntu 18.04LTS 上不起作用
对我来说,它没有显示安装位置(在 Linux Mint 19.3 上)
使用 sudo apt install python-pipsudo apt install python3-pip 安装的 pip 是 9.0.1。检查 github.com/pypa/pip/issues/5599 以了解升级 pippip3 的合适方法。
直接调用 pip 可能并不总是给出正确的答案。使用特定的 python 可执行文件调用 pip 更好,例如 python -m pip list -v 请参阅 stackoverflow.com/questions/29980798/…
R
Ryan Pederson

最简单的方法可能是

pip3 -V

这将向您显示 pip 的安装位置以及软件包的位置。


直接调用 pip 可能并不总是给出正确的答案。使用特定的 python 可执行文件调用 pip 更好,例如 python -m pip -V 请参阅 stackoverflow.com/questions/29980798/…
C
CognizantApe

默认情况下,在 Linux 上,Pip 将包安装到 /usr/local/lib/python2.7/dist-packages。

在安装期间使用 virtualenv 或 --user 将更改此默认位置。如果您使用 pip show,请确保您使用的是正确的用户,否则 pip 可能看不到您引用的包。


Linux:以 root 身份在 python3 中安装软件包 - 不推荐 - 将在 /usr/local/lib/python3.9/site-packages/ 中进行。作为普通用户,他们将进入/home/normaluser/.local/lib..。我想知道 / root/.local/lib.. 是做什么用的。
/root/.local/lib 在您执行 sudo pip uninstall --user package 时发生。即,当您在 sudo-ing 时进行用户安装时会发生这种情况。这是有道理的,因为 /root 是 root 用户的用户文件夹。
f
flow2k

在 Python 解释器或脚本中,您可以执行

import site
site.getsitepackages() # List of global package locations

site.getusersitepackages() # String for user-specific package location

对于安装第三方包(不在核心 Python 发行版中)的位置。

在我在 macOS 上安装了 Homebrew 的 Python 上,前者输出

['/usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages']

如前一个答案中所述,它规范化为 pip show 输出的相同路径:

$ readlink -f /usr/local/Cellar/python/3.7.4/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages
/usr/local/lib/python3.7/site-packages

参考:https://docs.python.org/3/library/site.html#site.getsitepackages


似乎所有包都没有实现函数 getsitepackage()getusersitepackages()。至少包 statsmodels 不存在这些功能......
@GaelLorieul 没有这样的事情。这两个函数是 site 模块的一部分;谈论“实现”它们的包是没有意义的。这些是使用 pip 安装的 any 软件包的默认位置,尤其是 statsmodels
w
wisbucky

最安全的方法是通过您正在执行的特定 python 调用 pip。如果您直接运行 pip show pip,它可能会调用与 python 正在调用的不同的 pip。例子:

$ python -m pip show pip
$ python3 -m pip show pip
$ /usr/bin/python -m pip show pip
$ /usr/local/bin/python3 -m pip show pip

这是一个示例,展示了它们的不同之处:

$ pip show pip

Location: /usr/local/lib/python3.9/site-packages

$ python -m pip show pip

Location: /Library/Python/2.7/site-packages

G
Gael Lorieul

可以导入包然后查阅它的帮助

import statsmodels
help(sm)

在帮助的最底部有一个部分 FILE 指示此软件包的安装位置。

该解决方案至少使用 matplotlib (3.1.2) 和 statsmodels (0.11.1) (python 3.8.2) 进行了测试。


我的天啊。我希望我在大约 help() 个月前就知道了!我什至编写了自己的代码来转储 __doc__。现在我上瘾了。我每天做 help(everything) 20 次。 帮助!