docs: L0 进度 3/12,记录 zstandard 残骸坑与决策 26/27
- STATUS.md:本次任务拆成「第一阶段已完成 / 第二阶段进行中」; L0 3/12;测试计数改为 39 passed / 44 skipped; 下一步里写明 io.py 待修的两处(mkdir 早于校验、缺 Raises) - docs/04-environment.md 坑 6:conda 升级留下的 *.conda_trash 残骸目录会被 Python 当成 namespace package 导入成功(__file__ 为 None), pandas 3.0 因此抛 ImportError: Can't determine version for zstandard 直接打断 pd.read_csv;含排查方法与「改名禁用」的修法 - docs/dev/personal-pitfalls.md:条目 3(注解与 docstring 打架)复发 +1 - 决策 26:未实现的算法逐条 skip,禁用模块级 pytestmark - 决策 27:zstandard 残骸改名禁用,不删不重装 - CHANGELOG:补 load_table/save_table 与 Fixed 段
This commit is contained in:
1 parent
b6456d97d8
commit
49fd84a2df
4 files changed
+82
-13
No files matched your search
@@ -129,6 +129,41 @@ Remove-Item -LiteralPath 'D:\anaconda\envs\mcm-toolkit' -Recurse -Force
|
||||
环境拿到的是更新的版本(pandas 从 2.3.3 跳到 **3.0.6**,是 major 升级)。
|
||||
见 §5,写代码时注意别依赖两套环境都有的行为。
|
||||
|
||||
**坑 6 —— conda 升级留下的 `*.conda_trash` 残骸会被 Python 当成包导入。**
|
||||
base 从 2025.12 升到 2026.07 后,`D:\anaconda\Lib\site-packages\zstandard\` 里只剩一个
|
||||
`backend_c.cp313-win_amd64.pyd.c~.conda_trash`。目录没了 `__init__.py`,Python 就把它当作
|
||||
**namespace package** 导入成功,于是:
|
||||
|
||||
```text
|
||||
>>> import zstandard
|
||||
>>> zstandard.__file__ # None —— 导入"成功"了,但什么都没拿到
|
||||
>>> zstandard.__version__
|
||||
AttributeError
|
||||
```
|
||||
|
||||
pandas 3.0 的 `import_optional_dependency("zstandard")` 拿到这种半残包时,抛的不是
|
||||
`ModuleNotFoundError`(那会被正常忽略),而是
|
||||
`ImportError: Can't determine version for zstandard`,直接**打断 `pd.read_csv`**。
|
||||
症状很迷惑:同一个脚本今天能跑明天不能跑,报错还指向 csv 读取。
|
||||
|
||||
**怎么查**(关键是 `__file__` 和 `__version__` 两项一起看):
|
||||
|
||||
```powershell
|
||||
& 'D:\anaconda\python.exe' -c "import zstandard; print(zstandard.__file__, getattr(zstandard,'__version__','MISSING'))"
|
||||
Get-ChildItem -LiteralPath 'D:\anaconda\Lib\site-packages\zstandard' -Force
|
||||
```
|
||||
|
||||
**怎么修**:确认 conda 记录里本来就没有这个包(`conda list -n base | findstr zstandard`
|
||||
只该看到 `backports.zstd` / `zstd`),再把这个残骸目录改名禁用(比删掉可逆):
|
||||
|
||||
```powershell
|
||||
Move-Item -LiteralPath 'D:\anaconda\Lib\site-packages\zstandard' `
|
||||
-Destination 'D:\anaconda\Lib\site-packages\zstandard.disabled-conda-trash'
|
||||
```
|
||||
|
||||
改名后 `import zstandard` 变成正常的 `ModuleNotFoundError`,pandas 会安静地跳过它。
|
||||
本次已按此处理,`.venv` 的 `pd.read_csv` 恢复正常。
|
||||
|
||||
---
|
||||
|
||||
## 五、两套环境的实际版本(已对齐)
|
||||
|
||||
Reference in new issue
Block a user