没有虚拟环境
pip <command> --user
更改当前pip命令的范围,使其在当前用户帐户的本地python软件包安装位置(而不是系统范围的软件包安装位置)上起作用,这是默认设置。
这仅在多用户计算机上才真正重要。安装到系统位置的所有内容都将对所有用户可见,因此,安装到该用户位置将使该软件包安装与其他用户分开(他们不会看到该软件包,因此必须自己单独安装才能使用)。因为可能存在版本冲突,所以安装具有其他软件包所需要的依赖关系的软件包可能会引起问题,因此最好不要将给定用户使用的所有软件包推送到系统安装位置。
- 如果是单用户计算机,则安装到该
--user
位置几乎没有差异。它将被安装到一个不同的文件夹中,该文件夹可能或不需要添加到路径中,具体取决于软件包及其使用方式(许多软件包都安装了命令行工具,这些工具必须位于要从外壳程序运行的路径上) 。
- 如果它是多用户计算机,
--user
则首选使用root / sudo或要求管理员安装并影响每个用户的Python环境,除非管理员希望默认情况下使所有用户都能使用常规软件包。
- 注意: 根据评论,在大多数Unix / Linux安装中,已经指出系统安装应使用常规的软件包管理器,例如
apt
,而不是pip
。
使用虚拟环境
--user
在活动的venv / virtualenv环境中,该选项将安装到本地用户python位置(与没有虚拟环境时相同)。
默认情况下,软件包已安装到虚拟环境,但是如果使用--user
它,将强制将其安装在虚拟环境之外的用户python脚本目录中(在Windows中,当前c:\users\<username>\appdata\roaming\python\python37\scripts
适用于Python 3.7)。
但是,您将无法从虚拟环境中访问系统或用户安装(即使您--user
在虚拟环境中使用过)。
如果使用--system-site-packages
参数安装虚拟环境,则可以访问python的系统脚本文件夹。我相信这也包括用户python脚本文件夹,但是我不确定。但是,这样做可能会产生意想不到的后果,并且它不是使用虚拟环境的预期方式。
Python系统和本地用户安装文件夹的位置
您可以使用找到python用户安装文件夹的位置python -m site --user-base
。我在“问题与解答”,文档中发现有冲突的信息,并且实际上在PC上使用此命令来确定默认值,但它们位于用户主目录(~
* nix中的快捷方式,c:\users\<username>
通常用于Windows)下。
其他详情
该--user
选项并非对每个命令都有效。例如,pip uninstall
将在安装了软件包的位置(用户文件夹,虚拟环境文件夹等)中查找和卸载软件包,并且该--user
选项无效。
随同pip install --user
安装的东西将安装在本地位置,该位置只能由当前用户帐户查看,并且不需要root用户访问权限(在* nix上)或管理员访问权限(在Windows上)。
该--user
选项会修改所有 pip
接受该命令的命令,以便在用户安装文件夹中查看/操作,因此,如果使用pip list --user
该选项,则只会显示您使用进行安装的软件包pip install --user
。
import site; print site.USER_SITE
打印安装位置。对我来说/${HOME}/.local/lib/python${PY_MAJOR}.${PY_MINOR}/site-packages
。