ubuntu新版本pip install提示错误error: externally-managed-environment

系统版本:
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.2 LTS (Noble Numbat)"

pip安装模块问题:

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.
    
    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.
    
    See /usr/share/doc/python3.12/README.venv for more information.

解决办法:
使用venv给每个项目都建立一个独立的依赖模块环境,这个最简单最好使了,对ubuntu系统环境的影响也比较小
安装venv

sudo apt install python3-venv 或者 sudo apt install python3.12-venv

生成python虚拟环境:

mkdir -p $HOME/.env && python3 -m venv $HOME/.env/projectname
#projectname设置成你项目的名称

依次安装依赖模块

$HOME/.env/project_name/bin/python -m pip install --upgrade pip
$HOME/.env/project_name/bin/python -m pip install packagename
$HOME/.env/project_name/bin/python -m pip install -r requirements.txt
#如果网速慢的话可以使用国内的镜像
$HOME/.env/project_name/bin/python -m pip install --upgrade pip -i  https://pypi.tuna.tsinghua.edu.cn/simple
$HOME/.env/project_name/bin/python -m pip install packagename -i  https://pypi.tuna.tsinghua.edu.cn/simple
$HOME/.env/project_name/bin/python -m pip install -r requirements.txt -i  https://pypi.tuna.tsinghua.edu.cn/simple

在当前终端激活刚刚生成的python虚拟环境执行py文件

source $HOME/.env/projectname/bin/activate

使用虚拟环境中的python执行py文件

$HOME/.env/projectname/bin/python ./xxxx.py

这个在crontab或者supervisor中的配置如下
crontab

0 0 * * * /root/.env/xxx/bin/python /mnt/xxx/xxx/xxx.py

supervisor

[program:xxx]
directory=/mnt/xxx/xxx
command=/root/.env/xxx/bin/python /mnt/xxx/xxx/xxx.py
autostart=true
priority=1
startsecs=1
startretries=86400
autorestart=true
exitcodes=0
user=root
redirect_stderr=true
stdout_logfile_maxbytes=50MB
stdout_logfile_backups=20
stdout_logfile=/mnt/xxx/xxx/logs_3.out
stopasgroup=false
killargroup=false

更多精彩内容 请关注公众号二维码(办公AI智能小助手)

posted @ 2025-06-20 19:49  qife  阅读(179)  评论(0)    收藏  举报