python note 19 异常处理

本文深入讲解Python中的异常处理机制,包括单分支、多分支、多分支合并、万能异常、as语法、else分支和finally分支的使用。通过实例演示如何处理ValueError、IndexError等常见异常,以及如何结合else和finally分支进行更精细的流程控制。

1、单分支

# 单分支
l = ['login','register']
for num,i in enumerate(l,1):
    print(num,i)

try:
    num = int(input('num >>>'))
    print(l[num - 1])
except ValueError :      # except处理的异常必须和实际报错的异常是相同的
    print('请输入一个数字')

 

2、多分支

# 多分支
l = ['login','register']
for num,i in enumerate(l,1):
    print(num,i)

try:
    num = int(input('num >>>'))
    print(l[num - 1])
except ValueError :
    # 从上向下报错的代码只要找到一个和报错类型相符的分支就执行这个分支中的代码,然后直接退出分支
    print('请输入一个数字')
except IndexError :
    # 如果找不到能处理和报错类型相同的分支,会一直往下走,最后还是没有找到就会报错
    print('只能输入1或2')

 

3、多分支合并

# 多分支合并
l = ['login','register']
for num,i in enumerate(l,1):
    print(num,i)

try:
    num = int(input('num >>>'))
    print(l[num - 1])
except (ValueError,IndexError) :
    print('您输入的内容不合法')

 

4、万能异常

# 万能异常
def buy():
    print('buy')
    name

def back():
    print('back')
    [][1]

def show():
    print('show')
    1/0

def main():
    l = [('购物',buy),('退货',back),('查看订单',show)]
    while True:
        for num,i in enumerate(l,1):
            print(num,i[0])
        num = int(input('num >>>'))
        print(l[num - 1])
        try:
            func = l[num - 1][1]
            func()
        except Exception:
            print('用户在选择了%s操作之后发生了不可知的异常' % l[num - 1][0])

main()

 

5、as语法  能够将具体错误信息打印出来

except Exception as e:
    print(e)

 

6、多分支 + 万能异常 : 万能异常应该永远放在异常处理的最下面

try:
    pass
except (ValueError,IndexError):
    print('针对性的处理')
except Exception as e:
    print(e)
    print('通用性的处理')

 

7、else分支

try:
    print('aaa')  # 给某某某发邮件
    # name
    # [][1]
    # 1/0
except NameError:   # 网络不稳定,邮箱地址错误
    print('name error')
except IndexError:
    print('index error')
except Exception as e:
    print('Exception')
else:  # 当try中的代码不发生异常的时候 走else分支  如果发送成功了 进行一些处理
    print('else')

 

8、finally分支

try:
    print('aaa')  # 给某某某发邮件
    # name
    # [][1]
    # 1/0
except NameError:   # 网络不稳定,邮箱地址错误
    print('name error')
except IndexError:
    print('index error')
except Exception as e:
    print('Exception')
else:  # 当try中的代码不发生异常的时候 走else分支  如果发送成功了 进行一些处理
    print('else')
finally: # 无论如何都会被执行
    print('finally')

 

9、异常处理的几种情况

try ... except
try ... except ... else
try ... finally
try ... except ... finally
try ... except ... else ... finally

 

转载于:https://www.cnblogs.com/P-Z-W/p/10964799.html

Collecting datasets<=3.6.0,>=3.0.0 (from modelscope[cv]) Downloading datasets-3.6.0-py3-none-any.whl.metadata (19 kB) Requirement already satisfied: einops in /mnt/storage/pythonenv/imageai/lib/python3.10/site-packages (from modelscope[cv]) (0.8.1) Requirement already satisfied: Pillow in /mnt/storage/pythonenv/imageai/lib/python3.10/site-packages (from modelscope[cv]) (11.2.1) Collecting python-dateutil>=2.1 (from modelscope[cv]) Downloading python_dateutil-2.9.0.post0-py2.py3-none-any.whl.metadata (8.4 kB) Requirement already satisfied: scipy in /mnt/storage/pythonenv/imageai/lib/python3.10/site-packages (from modelscope[cv]) (1.15.3) Collecting simplejson>=3.3.0 (from modelscope[cv]) Downloading simplejson-3.20.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.metadata (3.2 kB) Collecting sortedcontainers>=1.5.9 (from modelscope[cv]) Downloading sortedcontainers-2.4.0-py2.py3-none-any.whl.metadata (10 kB) Requirement already satisfied: transformers in /mnt/storage/pythonenv/imageai/lib/python3.10/site-packages (from modelscope[cv]) (4.52.3) Requirement already satisfied: accelerate in /mnt/storage/pythonenv/imageai/lib/python3.10/site-packages (from modelscope[cv]) (1.7.0) Collecting albumentations>=1.0.3 (from modelscope[cv]) Downloading albumentations-2.0.8-py3-none-any.whl.metadata (43 kB) Collecting av>=9.2.0 (from modelscope[cv]) Downloading av-15.0.0-cp310-cp310-manylinux_2_28_aarch64.whl.metadata (4.6 kB) Collecting bmt-clipit>=1.0 (from modelscope[cv]) Downloading https://modelscope.oss-cn-beijing.aliyuncs.com/releases/dependencies/bmt_clipit-1.0-py3-none-any.whl (42 kB) Collecting chumpy (from modelscope[cv]) Downloading chumpy-0.70.tar.gz (50 kB) Installing build dependencies ... done Getting requirements to build wheel ... error error: subprocess-exited-with-error × Getting requirements to build wheel did not run successfully. │ exit code: 1 ╰─> [23 lines of output] Traceback (most recent call last): File "<string>", line 9, in <module> ModuleNotFoundError: No module named 'pip' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/mnt/storage/pythonenv/imageai/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 389, in <module> main() File "/mnt/storage/pythonenv/imageai/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 373, in main json_out["return_val"] = hook(**hook_input["kwargs"]) File "/mnt/storage/pythonenv/imageai/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 143, in get_requires_for_build_wheel return hook(config_settings) File "/tmp/pip-build-env-9_tcp27v/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 331, in get_requires_for_build_wheel return self._get_build_requires(config_settings, requirements=[]) File "/tmp/pip-build-env-9_tcp27v/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 301, in _get_build_requires self.run_setup() File "/tmp/pip-build-env-9_tcp27v/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 512, in run_setup super().run_setup(setup_script=setup_script) File "/tmp/pip-build-env-9_tcp27v/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 317, in run_setup exec(code, locals()) File "<string>", line 11, in <module> ModuleNotFoundError: No module named 'pip' [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. error: subprocess-exited-with-error × Getting requirements to build wheel did not run successfully. │ exit code: 1 ╰─> See above for output. note: This error originates from a subprocess, and is likely not a problem with pip.
07-18
<think>我们正在解决的是在安装modelscope[cv]时遇到的chumpy包构建失败的问题,错误提示为ModuleNotFoundError: No module named 'pip'。这个问题通常是由于系统环境中pip模块未能正确加载或缺失导致的。下面我们将分步骤解决这个问题。 ### 问题分析 在构建chumpy包时出现`ModuleNotFoundError: No module named 'pip'`,这通常表明: 1. 当前Python环境中pip未安装(但这种情况较少见,因为通常安装Python时会自带pip)。 2. 当前使用的Python环境可能是一个精简环境,缺少部分标准库模块。 3. 环境变量问题导致Python无法找到pip模块。 ### 解决方案 #### 步骤1: 确保pip已安装 首先,检查当前环境中pip是否可用: ```bash python -m pip --version ``` 如果提示找不到pip,则需要先安装pip。但一般情况下,如果使用的是标准的Python环境,pip应该是自带的。如果确实没有,可以通过以下方式安装: ```bash # 对于Linux/macOS curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python get-pip.py ``` #### 步骤2: 修复pip的路径问题 如果pip已安装但无法找到,可能是因为环境变量问题。尝试以下命令: ```bash # 确保pip在PATH中 export PATH=$PATH:/path/to/your/python/bin # 替换为实际的Python bin目录 ``` #### 步骤3: 使用虚拟环境(推荐) 为了避免系统环境混乱,建议使用虚拟环境。这里以venv为例: ```bash # 创建虚拟环境 python -m venv myenv # 激活虚拟环境 source myenv/bin/activate # Linux/macOS # 或 myenv\Scripts\activate # Windows ``` 在虚拟环境中重新安装pip(虽然虚拟环境通常自带pip,但有时可能不完整): ```bash python -m ensurepip --upgrade ``` #### 步骤4: 重新安装modelscope[cv] 在虚拟环境中,再次尝试安装: ```bash pip install "modelscope[cv]" -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html ``` #### 步骤5: 单独安装chumpy(可选) 如果上述步骤后仍然失败,可以尝试单独安装chumpy: ```bash pip install chumpy ``` 然后再安装modelscope[cv]。 #### 步骤6: 使用--no-cache-dir选项 有时缓存可能导致问题,可以尝试不使用缓存: ```bash pip install --no-cache-dir chumpy ``` #### 步骤7: 检查Python环境 确保你使用的Python环境是完整的,没有缺失标准库。可以通过以下命令检查: ```bash python -c "import sys; print(sys.path)" ``` 确保包含标准库的路径(如`/usr/lib/python3.x`)在输出中。 ### 常见问题总结 1. **多Python版本冲突**:系统中可能存在多个Python版本,导致调用错误的pip。使用`which python`和`which pip`检查路径是否匹配。 2. **权限问题**:如果使用系统Python,可能需要sudo权限。但在虚拟环境中则不需要。 3. **损坏的安装**:pip自身可能损坏,可以尝试重新安装pip。 ### 示例:完整修复流程 假设我们在Linux系统中,使用Python3.8: ```bash # 创建虚拟环境 python3.8 -m venv myenv source myenv/bin/activate # 确保pip最新 python -m pip install --upgrade pip # 安装chumpy和modelscope[cv] pip install chumpy pip install "modelscope[cv]" -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html ``` ### 相关问题 1. 如何解决Python虚拟环境中包安装失败的问题? 2. 如何修复损坏的pip安装? 3. 在Linux系统中如何管理多个Python版本? 4. 如何避免Python包安装时的权限问题? 5. 使用虚拟环境有哪些好处? 请根据上述步骤尝试解决,如果问题仍然存在,请提供具体的错误日志以便进一步分析。</think>### 解决 chumpy 安装失败的 ModuleNotFoundError: No module named 'pip' 错误 这个问题通常发生在 Python 环境配置异常或 pip 安装不完整时。以下是完整的解决方案: #### 1. **修复 pip 安装** ```bash # 重新安装 pip 核心模块 python -m ensurepip --upgrade # 验证修复结果 python -c "import pip; print(pip.__version__)" ``` 如果输出 pip 版本号(如 `23.3.2`),表示修复成功[^1]。 #### 2. **检查 Python 环境隔离性** ```bash # 确认当前环境路径 echo $PATH which python # 创建纯净虚拟环境(推荐) python -m venv clean_env source clean_env/bin/activate ``` #### 3. **使用替代安装方法** ```bash # 方法1:直接指定 chumpy 安装源 pip install chumpy==0.70 --no-cache-dir # 方法2:二进制预编译安装 pip install --only-binary=:all: chumpy # 方法3:跳过依赖检查(紧急情况) pip install --no-deps chumpy ``` #### 4. **完整安装流程** ```bash # 步骤1: 创建新环境 python -m venv t2v_env source t2v_env/bin/activate # 步骤2: 更新基础工具 pip install --upgrade pip setuptools wheel # 步骤3: 安装 chumpy pip install chumpy==0.70 # 步骤4: 安装 modelscope[cv] pip install "modelscope[cv]" -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html ``` #### 5. **验证安装** ```python # 测试脚本 test_import.py import chumpy import modelscope print("所有模块导入成功!") ``` 运行验证: ```bash python test_import.py ``` ### 根本原因分析 此错误通常由以下情况导致: 1. **Python 环境损坏**:`ensurepip` 模块缺失或损坏 2. **PATH 配置错误**:系统误用非完整 Python 环境(如 `/usr/bin/python` 而非完整路径) 3. **包兼容性问题**:chumpy 0.70 需要 setuptools<60.0(自动处理依赖时可能冲突) 4. **权限问题**:普通用户尝试修改系统级 Python 环境 > **重要提示**:使用虚拟环境可避免 95% 的依赖问题,强烈推荐始终在虚拟环境中操作[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值