pip把它的包安装在哪里?

749

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

pip3 install Django==1.8

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

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


6
在命令行参数、环境变量或配置文件中,是否可以覆盖安装软件包的目录? - John Carrell
2
@JohnCarrell 是的,你可以使用 --target libs 命令来安装到 libs/ 目录下。 - Anders Rune Jensen
2
哈哈。嗯,@AndersRuneJensen,在你回答我的问题的4年里,我的Python技能已经显著提高了。我希望我能记得我发布了这个可爱的问题并自己来回答它,但你比我更快!谢谢你,不过,感谢你没有粗鲁地回答一个非常幼稚的问题。+1给你,先生! - John Carrell
这个回答解决了你的问题吗?如何找到Python site-packages目录的位置? - rofrol
10个回答

1134

pip show <package name> 可以提供Windows和macOS等系统的文件位置信息。 :)

例如:

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

30
在Mac上,这向我展示了一个包含awscli源代码但没有二进制文件的目录。 :/ - Cory Klein
12
正确,但为了完全符合问题要求,应该是 pip3 show <包名> - Jorge Torres
5
我使用的是Windows系统上的Python 3.6版本,"pip"指的是用于Python 3的pip。我不需要指定"pip3"。 - FistOfFury
18
与其在 site-packages/ 目录下,我发现它在 ~/Library/Python/3.7/bin/ 目录下。 - Matt Fletcher
5
在Ubuntu 18.04上表现非常出色。 - Mohammed Baashar
显示剩余7条评论

206

pip list -v可以用来列出包的安装位置,引入于https://pip.pypa.io/en/stable/news/#b1-2018-03-31

使用“-v”选项运行列表命令时显示安装位置。 (# 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(Bionic Beaver)上,使用 sudo apt install python-pipsudo apt install python3-pip 安装的 pippip3 版本为 9.0.1,不包含此功能。

请参阅 https://github.com/pypa/pip/issues/5599 以了解适当的升级 pippip3 的方法。


6
很遗憾,这在Ubuntu 18.04LTS上不起作用。 - Sumax
7
对我来说,它没有显示安装位置(在Linux Mint 19.3上)。 - Nicolai Weitkemper
2
使用 sudo apt install python-pipsudo apt install python3-pip 安装的 pip 版本为 9.0.1。请查看 https://github.com/pypa/pip/issues/5599 以获取升级 pippip3 的适当方法。 - leoly
直接调用 pip 可能不总是会得到正确的答案。使用特定的 python 可执行文件调用 pip 更好,例如 python -m pip list -v。请参见 https://dev59.com/pl0a5IYBdhLWcg3wvq8y#69035259。 - wisbucky
即使您使用可执行文件的子文件夹pip,也不一定会使用相同的环境变量,可能会安装到不同的位置。我已经在3个位置安装了Python:网络驱动器(嵌入式)、本地嵌入式和本地环境变量安装。PIP会混淆并将它们放在错误的位置…… - undefined

177

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

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


8
有时候你可能不知道 virtualenv 的名称或路径,例如在使用 Jupyterhub/binderhub 生成的资源时。我在这里找到了第一种方法(https://blog.revathskumar.com/2011/10/python-list-all-packages-installed.html),当 pip show 没有作用时它能够奏效。简单来说,它包括输入适当的 python 控制台并键入 help("module_name"),其中 module_name 被实际感兴趣的模块名称所替换。你可以在 python 控制台中使用 help("modules") 查看已安装的模块。 - Wayne
3
你是用什么方式建立你的虚拟环境的?我使用conda创建我的虚拟环境,而pip3在你提到的文件夹中没有安装包。 - cloudscomputes
2
当时(大约4年前),我使用的是virtualenv和Python 2.x。现在,我正在使用venv和Python 3.5.x。尽管如此,我仍然发现相同的一般文件夹结构。对于Anaconda来说,它是一个经过策划的独特分发,因此它可能会在某种程度上以不同的方式构建结构。 - khampson
其他答案提供了更通用的方法来定位包位置。 - kontur
但是如果你有两个版本的Python:3.8和3.7,它会安装在哪里? - Nathan B
@NathanB 输入 where pip 来查看正在使用的版本。它将安装到 PATH 变量指定的位置,这可能是另一个版本,因为它的工作原理就是这样。 - undefined

62

最简单的方法可能是

pip3 -V

这将向您展示 pip 安装的位置,因此也展示了您的软件包所在的位置。


2
直接调用 pip 可能不总是会得到正确的答案。使用特定的 python 可执行文件调用 pip 更好,例如 python -m pip -V。请参见 https://dev59.com/pl0a5IYBdhLWcg3wvq8y#69035259。 - wisbucky
如果没有使用sudo安装软件包,则pip3 -V会失败。 - Pierre ALBARÈDE

27
在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/zh-cn/3/library/site.html#site.getsitepackages


似乎并非所有的软件包都实现了getsitepackage()getusersitepackages()函数。至少对于statsmodels软件包来说,这些函数是不存在的... - Gael Lorieul
@GaelLorieul 没有这样的东西。这两个函数是site模块的一部分;谈论包“实现”它们是没有意义的。这些是使用pip安装的任何包的默认位置,特别是statsmodels - flow2k

26

最安全的方法是通过你正在执行的特定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

24

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

使用 virtualenv 或在安装时加上 --user 参数可以更改此默认位置。如果你使用 pip show 命令,请确保你正在使用正确的用户,否则 pip 可能无法看到你引用的软件包。


3
Linux:不建议使用root权限安装Python3的包,否则它们将被安装在/usr/local/lib/python3.9/site-packages/目录下。如果以普通用户身份安装,则会安装在/home/normaluser/.local/lib..目录下。我想知道/root/.local/lib..是用于什么的。 - Timo
1
当您执行 sudo pip uninstall --user package 时,会出现 /root/.local/lib。也就是说,在使用 sudo 进行用户安装时会发生这种情况。这是有道理的,因为 /root 是 root 用户的用户文件夹。 - CognizantApe

13

可以导入该包并查阅其帮助文档。

import statsmodels
help(sm)

在帮助文档的最底部,有一个名为FILE的部分,指示了此软件包安装的位置。

此解决方案已经在至少使用matplotlib(3.1.2)和statsmodels(0.11.1)(Python 3.8.2)进行测试。


3
天啊,我希望我几个月前就知道了help()的用法!我甚至写了自己的代码来输出__doc__。现在我已经上瘾了,一天要执行20次help(everything)。救命啊! - not2qubit

5
% python -c "import sysconfig; print(sysconfig.get_path('purelib'))"
/opt/homebrew/lib/python3.11/site-packages
% pip show yt-dlp
Name: yt-dlp
Version: 2023.3.4
Summary: A youtube-dl fork with additional features and patches
Home-page: https://github.com/yt-dlp/yt-dlp
Author:
Author-email:
License:
Location: /opt/homebrew/lib/python3.11/site-packages
Requires: brotli, certifi, mutagen, pycryptodomex, websockets
Required-by:

如何找到Python site-packages目录的位置?

或者更简短的方式是 python -m pip show pip

pip安装其软件包的位置在哪里?


0
如果您通过pip安装了软件包并在Windows上运行代码,则该软件包应位于以下目录之一: 用户站点包:C:\Users\USERNAME\AppData\Roaming\Python\PythonXX\site-packages 全局站点包:C:\Program Files\PythonXX\Lib\site-packages 请注意,“USERNAME”和“XX”取决于您的系统配置和您使用的Python版本。此外,如果您在与默认位置不同的位置安装了Python,则路径可能会有所不同。 如果您不确定软件包安装在哪里,可以打开命令提示符并键入pip show 'package-name'。这将显示软件包的安装位置。

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