我正在尝试在虚拟环境中的树莓派 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,但它也不起作用。
sudo
运行一个新的 root
shell,它不知道当前 shell 的设置(包括哪个虚拟环境处于活动状态)。
如果您想将东西安装到当前活动的用户拥有的虚拟环境中,绝对不要使用
sudo
。
不管怎样,拥有虚拟环境的全部目的就是完全由你自己控制;所以你不需要
root
权限来修改它(如果你设法做到了,在其中创建 root
拥有的文件会破坏它,因为这样你就不能再更改这些文件而不再次成为 root
)。
抱歉无法发表评论,因此在此添加,您是否可以正常工作?是否有相同的问题发布了问题
错误:pip python3 包安装中 virtualenv 上的外部管理环境
但是如果我不使用 sudo 则没有响应,它说[错误 13] 权限被拒绝,如果我使用 sudo 它会进入外部管理环境,不知何故发生的是系统不允许安装软件包,除非 sudo 并且如果你 sudo 它是将其安装在主要的 python 环境中。我不知道如何解决这个问题,在最近更新后发生这种情况之前工作正常。 然而,使用 apt install python3-pkg 可以很好地安装软件包,但是在主系统上,但无法在 venv 中访问它们