我最近升级(哈!!)到了 24.04.2 LTS 并且试图让它像我的 22.04 那样运行。
我一直在阅读许多关于如果遇到“外部管理环境”消息该怎么办的讨论,特别是https://stackoverflow.com/questions/75608323/how-do-i-solve-error-externally-managed-environment-every-time-i-use-pip-3
据我了解,当前的建议是通过创建虚拟环境来运行这样的包python3 -m venv .A
,其中 A 是 venv 名称。
但是我需要安装多个外部包。在旧系统中,它们是在整个系统范围内单独安装的,并且“相互通信”。
一个特殊的例子(但不是唯一的例子)是 astropy 和 Jupyter。我使用独立的 astropy 以及包含 astropy 的 Jupyter 笔记本。我也将 Jupyter 用于其他用途。两者现在都标记为“外部管理”。
据我理解,我需要将两者安装在单独的 venv 中,因为它们是外部的。我是否需要在每个 venv 中复制两者,或者是否有某种方法可以交叉访问它们?... 并为每个 venv 单独安装一个 python3?当然,还需要大量移动文件。一定还有其他方法 - 太笨重了!而且肯定非常低效,占用大量内存!
我在论坛和其他地方搜索了很久,但无果。
这不对。需要“相互通信”的软件包通常应安装在同一个 venv 中;就您而言,您需要一个虚拟环境,其中包含 Jupyter 和 astropy,以及您想要与 Jupyter 一起使用的任何其他软件包。
(如果您想要更新的 JupyterLab 界面,请随意替换
jupyter
)jupyterlab
在这种特殊情况下,您可能希望使用pipx,这是一个为您处理安装和管理 Python应用程序(您可以运行的程序)的工具。就像 Jupyter 一样。您只需安装一次 pipx,然后就可以让它创建一个新的 venv,并通过运行在该 venv 中安装 Jupyter
然后你可以通过运行以下命令将 astropy 或任何其他包“注入”到该 venv 中
(再次,如果需要,请随意
jupyter
替换jupyterlab
)值得一提的是,Jupyter 在 Python 软件包中比较特殊,因为它能够使用与安装时使用的完全不同的 Python 解释器。因此,如果您愿意,可以创建两个(或更多)单独的 venv:
jupyter
或jupyterlab
(如果您使用 pipx,则这是您运行pipx install jupyter
/时将获得的pipx install jupyterlab
)astropy
和计算所需的其他软件包然后,您必须配置 Jupyter Web 应用程序以使用来自其他 venv 的 Python 解释器作为内核。这是少数几种可以让不同的 venv 在某种有限的意义上“相互交流”的情况之一。但请记住,有人必须编写大量代码才能让 Jupyter 做到这一点。让不同的 venv 以这种方式相互交互并不常见。