ERROR: Exception: Traceback (most recent call last): File "C:\Users\11685159c\PycharmProjects\PythonProject\.venv\Lib\site-packages\pip\_internal\cli\base_command.py", line 180, in exc_logging_wrapper status = run_func(*args) ^^^^^^^^^^^^^^^ File "C:\Users\11685159c\PycharmProjects\PythonProject\.venv\Lib\site-packages\pip\_internal\cli\req_command.py", line 248, in wrapper return func(self, options, args) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\11685159c\PycharmProjects\PythonProject\.venv\Lib\site-packages\pip\_internal\commands\install.py", line 452, in run installed = install_given_reqs( ^^^^^^^^^^^^^^^^^^^ File "C:\Users\11685159c\PycharmProjects\PythonProject\.venv\Lib\site-packages\pip\_internal\req\__init__.py", line 67, in install_given_reqs uninstalled_pathset = requirement.uninstall(auto_confirm=True) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\11685159c\PycharmProjects\PythonProject\.venv\Lib\site-packages\pip\_internal\req\req_install.py", line 686, in uninstall uninstalled_pathset = UninstallPathSet.from_dist(dist) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\11685159c\PycharmProjects\PythonProject\.venv\Lib\site-packages\pip\_internal\req\req_uninstall.py", line 534, in from_dist for path in uninstallation_paths(dist): File "C:\Users\11685159c\PycharmProjects\PythonProject\.venv\Lib\site-packages\pip\_internal\req\req_uninstall.py", line 46, in unique for item in fn(*args, **kw): File "C:\Users\11685159c\PycharmProjects\PythonProject\.venv\Lib\site-packages\pip\_internal\req\req_uninstall.py", line 72, in uninstallation_paths entries = dist.iter_declared_entries() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\11685159c\PycharmProjects\PythonProject\.venv\Lib\site-packages\pip\_internal\metadata\base.py", line 507, in iter_declared_entries self._iter_declared_entries_from_record() File "C:\Users\11685159c\PycharmProjects\PythonProject\.venv\Lib\site-packages\pip\_internal\metadata\base.py", line 468, in _iter_declared_entries_from_record text = self.read_text("RECORD") ^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\11685159c\PycharmProjects\PythonProject\.venv\Lib\site-packages\pip\_internal\metadata\importlib\_dists.py", line 193, in read_text content = self._dist.read_text(str(path)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\11685159c\AppData\Local\Programs\Python\Python312\Lib\pathlib.py", line 1028, in read_text return f.read() ^^^^^^^^ File "<frozen codecs>", line 322, in decode UnicodeDecodeError: 'utf-8' codec can't decode byte 0x94 in position 4: invalid start byte
时间: 2025-07-01 15:01:13 AIGC 浏览: 37
在使用 `pip` 安装或卸载 Python 包时,可能会遇到如下错误:
```
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x94 in position 4
```
该问题通常发生在 Windows 系统上,尤其是在用户路径或环境变量中包含非 UTF-8 编码字符的情况下。这与 Python 在处理系统默认编码时的行为有关,特别是在旧版本的 Python 或 pip 中未正确处理系统编码的情况 [^1]。
---
### 解决方法
#### 设置 Python 的编码环境变量
可以在运行 `pip` 命令之前设置 `PYTHONIOENCODING` 环境变量为 `UTF-8` 或 `ISO-8859-1`,强制 Python 使用特定编码方式读写输入输出流:
```bash
set PYTHONIOENCODING=UTF-8
pip install some-package
```
或者尝试使用 `ISO-8859-1` 编码,它能兼容更多字节值:
```bash
set PYTHONIOENCODING=ISO-8859-1
pip install some-package
```
此方法适用于 Windows 平台,可绕过系统默认编码导致的解码错误 [^1]。
---
#### 修改 pip 配置文件指定默认编码
可以通过创建或修改 `pip.ini` 配置文件,在 `[global]` 段中添加编码设置:
```ini
[global]
encoding = iso-8859-1
```
该配置文件通常位于以下路径之一(具体取决于操作系统):
- Windows:`C:\Users\<用户名>\pip\pip.ini`
- Linux/macOS:`~/.pip/pip.conf`
这样可以确保每次执行 `pip` 命令时都使用指定的编码方式,避免因系统编码不一致引发的问题 [^1]。
---
#### 使用 chcp 命令切换命令行编码
在 Windows 上,还可以通过切换命令行的代码页为 UTF-8 来解决部分解码问题:
```bash
chcp 65001
pip install some-package
```
其中 `65001` 是 UTF-8 的代码页编号。如果仍无法解决问题,可尝试切换到其他编码,如 `chcp 437`(OEM 美国英语)或 `chcp 850`(多语言拉丁文)[ ^1]。
---
#### 升级 pip 和 Python 版本
某些旧版本的 pip 或 Python 对编码的支持不够完善,建议升级至最新版本以获得更好的兼容性:
```bash
python -m pip install --upgrade pip
```
较新的 Python 版本(如 Python 3.7+)对系统编码的处理更加健壮,能够自动识别和适配不同编码环境 。
---
#### 自定义脚本封装安装过程
对于频繁出现编码问题的环境,可以编写一个封装脚本来统一设置编码并调用 pip:
```batch
@echo off
set PYTHONIOENCODING=UTF-8
python -m pip %*
```
将上述内容保存为 `pip_utf8.bat`,后续使用 `pip_utf8 install package_name` 替代原生的 `pip` 命令,可有效规避编码异常问题 。
---
阅读全文
相关推荐














