在Ubuntu22.04及以上系统版本中使用pip3命令安装第三方库时报error: externally-managed-environment
错误。
由于Ubuntu系统采用了PEP668规范,限制了用户在Ubuntu系统的Python环境中直接使用pip命令进行包的安装,防止用户安装的第三方包破坏系统自带的Python环境。
--break-system-packages
参数pip3 install requests --break-system-packages
使用该参数,可以将第三方库强制安装至系统的Python环境。在安装过程中,系统仍然会提示强制安装的风险。
该方法旨在Ubuntu系统中创建一个用户维度的虚拟Python环境。该虚拟环境不会与系统自带的Python环境产生交集。后续在Python程序的开发与测试中只需要在虚拟环境中进行依赖的安装与配置即可,灵活性更高。
# 创建虚拟环境
python3 -m venv myenv
# 激活虚拟环境
source myenv/bin/activate
#在虚拟环境中安装第三方包
pip install requests
#!/path/to/venv/bin/python
直接在脚本中指定虚拟环境的Python解释器的路径。
然后对脚本赋予可执行权限
chmod +x test.py
运行./test.py
这样Python脚本在执行时就会使用虚拟环境中配置的Python解释器。
source /home/user/myenv/bin/activate
然后执行python test.py
import os
import sys
venv_path = "/home/user/myenv"
activate_script = os.path.join(venv_path, "bin", "activate_this.py")
with open(activate_script) as f:
exec(f.read(), dict(__file__=activate_script))
# 现在可以直接使用venv里的库
import requests
print(requests.__version__)
Ubuntu默认会优先搜索/usr/lib目录下安装的包。我们可以通过软链接的方式将虚拟环境的Python软链接之lib目录下。之前安装的第三方库也可以cp到软链接后的目录下。这个方法可以使我们默认使用虚拟环境,避免每次对虚拟环境进行激活。
ln -s ~/myenv/bin/python3 /usr/lib
cp ~/myenv/bin/python3/site-packages/* /usr/lib/python3.12/site-packages
然后在~/.bashrc中添加:
export PYTHON_PATH="/root/myenv/bin"
export PATH="$PYTHON_PATH:$PATH"
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。