Windows下VSCode+Conda环境中h5py无法操作HDF5文件求助
解决Windows+Miniconda环境下h5py创建HDF5文件的锁文件错误
问题描述
- 运行环境:Windows系统、VSCode编辑器、Miniconda虚拟环境
- 执行代码:
import h5py hdf5_filepath = 'filepath' h = h5py.File(hdf5_filepath, 'w')
- 触发错误:
OSError: [Errno 0] Unable to synchronously create file (unable to lock file, errno = 0, error message = 'No error', Win32 GetLastError() = 1)
- 已尝试无效操作:
- 代码内设置环境变量:
import os; os.environ["HDF5_USE_FILE_LOCKING"] = "FALSE" - 通过Conda卸载并重装h5py包
- 代码内设置环境变量:
可行解决方案
1. 校验文件路径与文件夹权限
- 使用绝对路径替代相对路径,避免路径解析异常,示例:
hdf5_filepath = r'C:\Projects\ML_Dataset\data.h5'
- 检查目标文件夹的读写权限:右键文件夹→属性→安全选项卡,确认当前用户拥有写入权限,缺失则添加对应权限。
2. 终止占用文件的进程
- 排查是否有其他程序占用目标文件或所在文件夹,比如文件资源管理器的预览功能、HDFView工具、其他Python运行进程等,关闭这些进程后重试。
- 可通过任务管理器结束所有
python.exe和code.exe相关进程,重新打开VSCode运行代码。
3. 调整环境变量设置时机
- 确保环境变量在h5py导入前设置,保证生效:
import os os.environ["HDF5_USE_FILE_LOCKING"] = "FALSE" import h5py # 必须放在环境变量设置之后 hdf5_filepath = r'C:\Projects\ML_Dataset\data.h5' h = h5py.File(hdf5_filepath, 'w')
- 也可在Miniconda环境中提前设置环境变量:
- 打开Anaconda Prompt,激活目标环境:
conda activate your_env_name - 执行命令:
set HDF5_USE_FILE_LOCKING=FALSE - 从该终端启动VSCode:
code .
- 打开Anaconda Prompt,激活目标环境:
4. 调整h5py或HDF5库版本
- 安装兼容Windows的稳定版h5py:
conda install h5py==3.7.0
- 若问题持续,更新HDF5基础库:
conda install hdf5=1.12.2
5. 临时关闭Windows Defender实时保护(测试用)
- Windows Defender的实时扫描可能锁定文件,临时关闭后测试代码。若问题解决,将目标文件夹添加到Defender的排除列表,避免后续干扰。
内容的提问来源于stack exchange,提问作者msour15
相关产品推荐
相关产品推荐

