在虚拟环境中运行 pip install 尝试在默认 python 目录中安装包

问题描述 投票:0回答:2

我正在尝试在虚拟环境中的树莓派 5 上安装 python 模块,但它只是说该环境是外部管理的。

我开始激活虚拟环境并尝试安装我需要的软件包,但它只是告诉我该环境是外部管理的。

clock@system-time:/clock $ source .venv/bin/activate
(.venv) clock@system-time:/clock $ sudo python3 -m pip install inputimeout
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.

    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.

    For more information visit http://rptl.io/venv

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

我检查了它使用的是哪个 pip 和 python,它是来自虚拟环境的。

(.venv) clock@system-time:/clock $ which pip
/clock/.venv/bin/pip
(.venv) clock@system-time:/clock $ which python
/clock/.venv/bin/python

所以我尝试使用

--break-system-packages
,因为我想也许只是出了点问题。它下载并安装了该软件包。

(.venv) clock@system-time:/clock $ sudo python3 -m pip install inputimeout --break-system-packages
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting inputimeout
  Downloading inputimeout-1.0.4-py3-none-any.whl (4.6 kB)
Installing collected packages: inputimeout
Successfully installed inputimeout-1.0.4
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

然后我尝试检查已安装软件包的列表,但它不在那里。

(.venv) clock@system-time:/clock $ pip list
Package    Version
---------- -------
pip        23.0.1
setuptools 66.1.1

所以我退出并检查了Python的默认安装列表,它就在那里。

(.venv) clock@system-time:/clock $ deactivate
clock@system-time:/clock $ pip list
Package                            Version
---------------------------------- ----------
arandr                             0.1.11
asgiref                            3.6.0
astroid                            2.14.2
asttokens                          2.2.1
av                                 10.0.0
Babel                              2.10.3
beautifulsoup4                     4.11.2
blinker                            1.5
certifi                            2022.9.24
chardet                            5.1.0
charset-normalizer                 3.0.1
click                              8.1.3
colorama                           0.4.6
colorzero                          2.0
cryptography                       38.0.4
cupshelpers                        1.0
dbus-python                        1.3.2
dill                               0.3.6
distro                             1.8.0
docutils                           0.19
executing                          2.0.1
Flask                              2.2.2
gpiozero                           2.0
html5lib                           1.1
icecream                           2.1.3
idna                               3.3
importlib-metadata                 4.12.0
inputimeout                        1.0.4
...

我也尝试遵循this,但它也不起作用。

python python-3.x raspberry-pi
2个回答
2
投票

sudo
运行一个新的
root
shell,它不知道当前 shell 的设置(包括哪个虚拟环境处于活动状态)。

如果您想将东西安装到当前活动的用户拥有的虚拟环境中,绝对不要使用

sudo

不管怎样,拥有虚拟环境的全部目的就是完全由你自己控制;所以你不需要

root
权限来修改它(如果你设法做到了,在其中创建
root
拥有的文件会破坏它,因为这样你就不能再更改这些文件而不再次成为
root
)。


0
投票

抱歉无法发表评论,因此在此添加,您是否可以正常工作?是否有相同的问题发布了问题

错误:pip python3 包安装中 virtualenv 上的外部管理环境

但是如果我不使用 sudo 则没有响应,它说[错误 13] 权限被拒绝,如果我使用 sudo 它会进入外部管理环境,不知何故发生的是系统不允许安装软件包,除非 sudo 并且如果你 sudo 它是将其安装在主要的 python 环境中。我不知道如何解决这个问题,在最近更新后发生这种情况之前工作正常。 然而,使用 apt install python3-pkg 可以很好地安装软件包,但是在主系统上,但无法在 venv 中访问它们

© www.soinside.com 2019 - 2024. All rights reserved.