使用conda复制Python环境失败:读取显式列表文件时包路径字符间出现空格导致PackagesNotFoundError
Conda环境复制时出现路径字母间空格导致PackagesNotFoundError的解决办法
我之前也遇到过一模一样的问题!这种字母间插空格的报错真的很头疼,我来帮你理清楚原因和解决办法:
问题成因
这种错误本质是conda读取导出的显式包列表文件时,解析出的URL格式被破坏,主要有这几个常见原因:
- 导出文件时终端的编码异常,或者文件被保存成了非UTF-8的编码(比如UTF-16),导致conda解析每个字符时都插入了空格
- 导出后用某些自带文本编辑器(比如Windows旧版记事本)打开并保存过,编辑器自动给文本加了多余的格式或空格
- 导出命令执行时,终端环境存在特殊的字符转义问题,生成的文件本身就带了空格
解决办法
方法1:重新导出环境文件(最推荐)
直接避开可能的编码/编辑问题,重新生成干净的包列表:
- 打开Anaconda Prompt(优先用这个,避免CMD的编码问题)
- 激活你要复制的原环境(如果需要):
conda activate your_old_env - 执行导出命令,不要加多余符号:
conda list --explicit > clean_env.txt - 直接用这个新生成的文件执行创建命令,不要先打开编辑:
conda create --name ENVNAME --file "D:\path\to\clean_env.txt"
方法2:修复现有损坏的文件
如果不想重新导出,可以手动修复已有的txt文件:
- 用VS Code或者Notepad++打开损坏的txt文件(不要用Windows自带记事本)
- 按下
Ctrl+H打开替换窗口,在「查找内容」里输入一个空格,「替换为」留空 - 点击「全部替换」,把文件里所有多余的空格都去掉
- 保存文件时确认编码是UTF-8(VS Code右下角可以查看/切换编码),再重新执行创建命令
方法3:换用yml格式导出(备选方案)
如果显式列表的方式一直出问题,试试用yml格式导出,这种方式兼容性更好:
- 导出yml文件:
conda env export > environment.yml - 用yml文件创建新环境:
conda env create -f environment.yml --name ENVNAME
额外小贴士
- 执行创建命令时,确保文件路径没有特殊字符,路径有空格的话一定要用双引号括起来
- 如果还是报错,可以尝试更新conda到最新版本:
conda update conda,旧版本可能存在编码解析的bug
内容的提问来源于stack exchange,提问作者Kouichi C. Nakamura
相关产品推荐
相关产品推荐

