ubuntu成功安装高版本python,使用其他命令出现subprocess.CalledProcessError错误

1.ubuntu之前安装python3.5版本,更新升级为python3.7版本。

2.使用pip3 install pyinstaller,报subprocess.CalledProcessError: Command '('lsb_release', '-a')' returned non-zero exit status 1.

3.执行sudo find / -name 'lsb_release.py'

4.将相关文件进行copy

sudo cp  /usr/share/pyshared/lsb_release.py /usr/local/python3/lib/python3.9/

5.执行sudo locate CommandNotFound

6.将上面的35修改为37 

sudo mv /usr/lib/python3/dist-packages/CommandNotFound/__pycache__/CommandNotFound.cpython-35.pyc /usr/lib/python3/dist-packages/CommandNotFound/__pycache__/CommandNotFound.cpython-37.pyc

sudo mv /usr/lib/python3/dist-packages/CommandNotFound/__pycache__/__init__.cpython-35.pyc /usr/lib/python3/dist-packages/CommandNotFound/__pycache__/__init__.cpython-37.pyc

sudo mv /usr/lib/python3/dist-packages/CommandNotFound/__pycache__/util.cpython-35.pyc /usr/lib/python3/dist-packages/CommandNotFound/__pycache__/util.cpython-37.pyc

 7.再次执行sudo pip3 install pyinstaller 成功

 

 

 

 

使用Pythonsubprocess模块执行一个外部命令时,如果该命令返回了非零的退出状态码,会触发subprocess.CalledProcessError异常。这个异常会包含有关子进程返回状态码和错误输出的信息。 一般情况下,这个错误表示外部命令在执行时发生了错误。有几种可能的原因导致此错误: 1. 命令不存在或无法找到:如果子进程要执行的命令不存在,那么系统将返回一个非零的状态码。要解决此问题,请确保指定的命令被正确安装命令的路径是正确的。 2. 输入或参数错误:有时候外部命令可能会对输入数据或参数进行验证,如果给定的数据或参数不符合要求,子进程可能会返回一个非零的状态码。在这种情况下,需要确认提供的数据和参数是正确的,并且符合外部命令的预期。 3. 权限问题:某些命令可能需要管理员权限才能执行,如果当前用户没有足够的权限运行这个命令,子进程将返回一个非零的状态码。要解决此问题,请确保使用了具有足够权限的用户运行Python程序。 为了处理这个异常,可以使用try-except语句来捕获CalledProcessError异常,并在异常处理块中处理相关的错误信息。通过访问异常对象的output属性可以获取外部命令错误输出,通过访问returncode属性可以得到子进程的返回状态码。 以下是一个处理subprocess.CalledProcessError异常的示例: ```python import subprocess try: # 执行外部命令,可能会触发异常 output = subprocess.check_output(["non_existing_command"]) except subprocess.CalledProcessError as e: # 处理异常 print("外部命令返回非零状态码:", e.returncode) print("错误输出信息:", e.output) ``` 通过适当地处理subprocess.CalledProcessError异常,我们可以增强程序的稳定性,并确保在发生子进程错误时我们能正确处理异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值