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智能小助手)


浙公网安备 33010602011771号