首先:我的操作系统是 openSUSE Tumbleweed,我的 Python 版本是 3.11.7,我的 pip 版本是 23.2.2
我的目标如下:我想使用pip将pytictoc包安装到我用Python创建的虚拟环境中。
我对如何做到这一点的理解是:
python3 -m venv env
为我的虚拟环境创建一个名为 env
的目录。source bin/activate
来激活虚拟环境(env)
应出现在当前行以及任何后续行的开头。python -m pip install pytictoc
将pytictoc包安装到虚拟环境尝试执行这些步骤时,1-3 没有任何问题,但是运行步骤 4 中的命令会产生
externally-managed-environment
错误。这是完整的错误消息:
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try
zypper install python311-xyz, where xyz is the package
you are trying to install.
If you wish to install a non-rpm packaged Python package,
create a virtual environment using python3.11 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip.
If you wish to install a non-rpm packaged Python application,
it may be easiest to use `pipx install xyz`, which will manage a
virtual environment for you. Install pipx via `zypper install python311-pipx` .
据我所知,我做的一切都是正确的,所以我不知道如何解决这个问题。我见过涉及在 pip 上附加
--break-system-packages
的解决方案,但这似乎适用于用户不使用虚拟环境的情况。据我所知,除了thisaskubuntu问题之外,没有其他论坛有人遇到我的确切问题。用户回复了最上面的答案,解释说尽管处于虚拟环境中,他们仍然收到错误消息。然而这条评论没有得到任何回应。
可能还有其他解决方案,例如使用 pipx,或其他虚拟环境(例如 conda)。不幸的是,对我来说,使用 venv 创建虚拟环境,并使用 pip 专门安装“pytictoc”包是“必要的”。我无法在系统范围内安装该软件包。 我感谢任何人能够提供的任何帮助或回应。感谢您花时间阅读本文!
python
aliased(在您的 shell 中)to
/usr/bin/python3.11
。因此,当您在命令行中运行 python -m pip
时,您实际上运行的是全局 pip
,而不是来自 venv 的 pip
,并且全局 pip
抱怨“外部管理环境”。当您激活虚拟环境时,您应该取消别名python
;您可以将
unalias python python3
插入到 activate
脚本中。或者始终使用绝对或相对路径运行 venv/bin/python -m pip
。where python
确保您使用正确的虚拟环境。