没有虚拟环境
pip <command> --user
会将当前 pip 命令的作用范围更改为当前用户账户的本地 Python 包安装位置,而不是系统范围的包安装位置(这是默认设置)。
这只在多用户机器上真正重要。任何安装到系统位置的东西都将对所有用户可见,因此安装到用户位置将使该软件包的安装与其他用户分开(他们将看不到它,并且必须单独安装它们以使用它)。因为版本冲突可能会导致问题,所以最好不要将用户使用的所有软件包都安装到系统安装位置。
- 如果是单个用户的机器,则将其安装到
--user
位置几乎没有区别。它将被安装到不同的文件夹中,可能需要根据软件包和其使用方式将其添加到 path 中(许多软件包安装了必须从 shell 运行的命令行工具)。
如果是多用户机器,建议使用--user
选项安装Python包,而不是使用root/sudo或需要管理员权限的安装方式,以免影响每个用户的Python环境。除非是管理员想要默认提供给所有用户的通用包。
- 注意: 根据评论,在大多数Unix/Linux系统上,系统安装应该使用通用的软件包管理器,如
apt
,而不是pip
。
使用虚拟环境
在活动的venv/virtualenv环境中使用--user
选项将安装到本地用户Python位置(与没有虚拟环境相同)。
默认情况下,软件包会安装到虚拟环境中,但是如果您使用--user
选项,则会强制在虚拟环境之外安装,在用户的Python脚本目录中(在Windows上,这目前为c:\users\<username>\appdata\roaming\python\python37\scripts
,我的Python版本为3.7)。
然而,即使您在虚拟环境中使用了--user
选项,也无法从虚拟环境中访问系统或用户安装的库。
如果您使用--system-site-packages
参数安装虚拟环境,则可以访问Python系统脚本文件夹。我认为这也包括用户Python脚本文件夹,但我不确定。但是,这可能会产生意想不到的后果,因此它不是使用虚拟环境的预期方法。
Python系统和本地用户安装文件夹位置
您可以使用python -m site --user-base
命令找到Python用户安装文件夹的位置。关于默认设置,我在问答、文档中以及在我的电脑上实际使用该命令方面存在互相矛盾的信息,但它们都位于用户主目录下(对于*nix中,是~
快捷方式,在Windows上通常为c:\users\<username>
)。
其他细节
--user
选项不是每个命令都有效。例如,pip uninstall
命令将查找并卸载已安装的软件包(在用户文件夹、虚拟环境文件夹等任何位置),而 --user
选项无效。
使用 pip install --user
安装的内容将被安装在本地位置,只能被当前用户账户看到,无需管理员访问权限(在 *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
。 - Trevor Boyd Smith/usr/local/lib/pythonX.X/dist-packages
是由 pip 安装的包的默认目录。但如果一个用户想要安装特定于用户的软件包,他们可以使用$ sudo pip3 --user install some_package
。这个软件包将仅对安装它的用户可用,其他访问该主机的组和用户无法访问它。 - noobninja