佳木斯市网站建设_网站建设公司_改版升级_seo优化
2025/12/17 15:00:01 网站建设 项目流程

背景

在较新的 Linux 发行版中(实际上主要是 Ubuntu 23.04+ 开始严格执行 PEP 668 规范,但在 20.04 中如果你使用了更新的 Python PPA 也可能遇到),系统为了防止用户通过 pip 破坏系统自带的 Python 依赖,禁止了直接向系统环境安装包。现象如下:

error: externally-managed-environment× This environment is externally managed
╰─> To install Python packages system-wide, try apt installpython3-xyz, where xyz is the package you are trying toinstall.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. Makesure you have python3-full installed.If you wish to install a non-Debian packaged Python application,it may be easiest to use pipx install xyz, which will manage avirtual environment for you. Make sure you have pipx installed.See /usr/share/doc/python3.12/README.venv for more information.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.

解决方案

01 暴力解决

修改:EXTERNALLY-MANAGED文件名字即可,注:python3.x这里的x对应自己系统的版本,然后就可以正常安装包了,但是官方既然出了这个机制,一定是这样使用有不保险的地方,所以建议第二种方案

sudo mv /usr/lib/python3.x/EXTERNALLY-MANAGED /usr/lib/python3.x/EXTERNALLY-MANAGED.bk

02 使用虚拟环境

利用 Ubuntu 20.04 默认可能不再绑定python这一特点,抢占 python 这个命令名。

我们不需要激活环境,只需要把命令“指”过去。推荐使用 Alias(别名) 方案,这是最安全、最容易回退的方式。

操作步骤

  1. 创建一个固定的虚拟环境
    找个地方把环境藏起来,比如放在用户目录下的隐藏文件夹 .daily_env

# 确保安装了 venv 模块
sudo apt install python3-venv -y# 创建虚拟环境
python3 -m venv ~/.daily_env
  1. 修改 .bashrc 设置别名
    我们需要告诉系统:当我敲 python 时,实际上是在运行 .daily_env 里的那个 python

打开配置文件:


nano ~/.bashrc
在文件最末尾加入以下两行:# --- Python Daily Environment ---
# 拦截 python 和 pip 命令,指向虚拟环境
alias python='~/.daily_env/bin/python'
alias pip='~/.daily_env/bin/pip'

注意:不要 alias python3,让它继续指向系统。

保存退出(按 Ctrl+O 回车,然后 Ctrl+X)。

  1. 生效并验证
    刷新配置:

source ~/.bashrc

现在来验证一下魔法是否生效:

检查 Python 位置:


which python
# 如果是 alias,这里可能不会显示路径,或者显示 alias python='...'
# 我们可以直接运行:
python -c "import sys; print(sys.executable)"
# 预期输出: /home/你的用户名/.daily_env/bin/python (成功!)

检查系统 Python3 位置(确保没坏):


python3 -c "import sys; print(sys.executable)"
# 预期输出: /usr/bin/python3 (系统环境,安全!)

这个方案的优点
无感使用:你以后安装包直接 pip install numpy,写代码直接 python main.py。不用打 source activate,也不用看终端前面那个烦人的 (venv) 前缀。

系统隔离:不管你怎么用 pip 装包,装出来的包都在 ~/.daily_env/lib/python3.8/site-packages 里,完全碰不到 /usr/lib/python3。

兼容性好:如果你偶尔需要用到系统的环境运行系统脚本(比如 apt 相关的),系统调用的都是 python3,完全不受你这个别名的影响。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询