如何在全球而非本地安装pip软件包?


101

我正在尝试使用pip3安装flake8软件包,但似乎已拒绝安装,因为它已安装在一个本地位置。

如何强制它在全局(系统级别)安装?

pip3 install flake8
Requirement already satisfied (use --upgrade to upgrade): flake8 in ./.local/lib/python3.4/site-packages

请注意,我更喜欢一种通用解决方案(该解决方案应该在Debian,OS X甚至Windows上都可以使用),该解决方案可以在任何平台上使用,所以我不想自己指定目的地。

出于某种奇怪的原因,它的行为就像我已经指定了--user(在我的情况下我没有指定)。

我能够全局安装软件包的唯一方法是先将其删除,然后再重新安装。如果以某种方式存在,pip(8.1.1)似乎拒绝全局安装软件包。

免责声明:实验期间未使用或损坏任何虚拟环境。


3
您是否尝试过以root用户或sudo进行操作?
matino

你试过了pip install flake8 --upgrade吗?
Mauro Baraldi

如果存在与使用虚拟环境(venv)有关的类似问题,请使用--system-site-packages选项将全局安装的软件包继承到venv中。参见stackoverflow.com/a/61326709/4445175
Wlad

Answers:


144

您为什么不尝试sudo使用H标志?这应该可以解决问题。

sudo -H pip install flake8

普通人sudo pip install flake8将尝试使用您自己的主目录。该-H指示它使用系统的主目录。有关更多信息,访问https://stackoverflow.com/a/43623102/


107
H就像在Hlobal中一样?
马特

65
-H就像在sudo中一样,停止使用我的主目录。使用您自己的Home目录代替 stackoverflow.com/a/43623102
nikhilweee

7
这实际上并没有在全球范围内进行安装,而是似乎仅将其存储在用户“ root”的主目录中
parsecpython

@nikhilweee我不明白这与pip3 install ipython禁用virtualenv时有何不同,它们似乎安装在同一site-packages目录中。
iamfrancisyo

@parsecpython对我来说是有效的,然后将软件包安装到/usr/local/lib/python3.8/dist-packages中,我的意思是
yota

8

也许--force-reinstall会奏效,否则就可以解决问题--ignore-installed



2

我实际上看不到您的问题。全局是python3路径的站点包文件夹中的任何包。

如果要仅在本地使用它,则必须配置virtualenv并在激活的虚拟环境中重新安装软件包。


创建venv时,您可以--system-site-packages .venv/dev用来继承全局软件包,因此不必在每个venv中重新安装它们。对于可能要在任何项目中使用的包,例如black,flake8,pytest,这是有意义的。范例:python -m venv --system-site-packages .venv/dev
Wlad

0

python中的pip安装在哪里进行?

我将提供我面临的Windows解决方案,并花了一些时间解决。

首先,在Windows中(如果使用Windows作为操作系统,则将Windows作为操作系统),pip install <package_name>默认情况下,它将全局安装(如果您尚未激活虚拟环境)。激活虚拟环境并进入虚拟环境后,所有pip安装都将在该虚拟环境内。


pip正在安装上述软件包,但是我不能使用它们吗?

对于这个pip,可能会警告您,pip可执行文件(例如pip3.exepip.exe不在您的path变量上。为此,您可以将此路径(通常为- C:\Users\<your_username>\AppData\Roaming\Programs\Python\)添加到环境变量中。重新启动后cmd,现在尝试使用已安装的python软件包。现在应该可以工作了。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.