我在windows 10上使用Miniconda 64位版本4.9.2。由于某种原因,我的python安装在运行脚本后总是损坏,有时它会随机发生,有时似乎是特定的脚本导致它损坏。这不会发生在我的其他队友,虽然他们运行类似的环境。
将会发生的是,在尝试运行一个特定的脚本或命令(例如jupyter lab)之前工作的那天,我将随机得到一个错误,类似于以下内容:
ValueError: bad marshal data (unknown type code)
通常它似乎涉及到我在堆栈跟踪中使用的库,但我不认为它是一个特定的库,因为它在堆栈跟踪中会不时出现不同的库,我猜在那一刻损坏了什么。我已经尝试删除pycache文件的特定库出错,但这告诉我我认为是问题的根源,文件被损坏和覆盖随机字符。查看下面删除.pyc文件并尝试再次运行后的错误堆栈跟踪示例:
Traceback (most recent call last):
File "c:usersuserminiconda3envsenvironmentlibrunpy.py", line 194, in _run_module_as_main
return _run_code(code, main_globals, None,
File "c:usersuserminiconda3envsenvironmentlibrunpy.py", line 87, in _run_code
exec(code, run_globals)
File "c:usersuserminiconda3envsenvironmentScriptsjupyter.exe__main__.py", line 4, in <module>
File "c:usersuserminiconda3envsenvironmentlibsite-packagesjupyter_corecommand.py", line 18, in <module>
from . import paths
File "c:usersuserminiconda3envsenvironmentlibsite-packagesjupyter_corepaths.py", line 15, in <module>
import tempfile
File "c:usersuserminiconda3envsenvironmentlibtempfile.py", line 832
self._rmtree(ȕ&�n�gH�6�
^
SyntaxError: invalid character in identifier
当我在得到这个错误后查看文件时,它实际上已经被截断,并且像上面看到的那样插入了随机字符。这从来不会发生在脚本中间,只有在某些东西运行之后,我尝试再次运行它,或者之后我尝试运行其他东西。不知道怎么回事,我不是很精通python。我每天都要重新安装好几次。
是我的系统有问题吗?我使用pycharm作为我的IDE,这有什么关系吗?我将尝试不同版本的miniconda,但不确定这是否有用。通过我的研究,我没有发现很多支持这个问题的证据。
我使用Miniforge (python 3.7.10, conda 4.10.3, windows 10)也有同样的问题。一些模块的.py文件的最后一行被随机损坏。
我注意到除了lib
内容外,pkgs
子文件夹中的所有.py文件都已经损坏,但是tar包中的压缩文件很好。
我找到了这个临时的解决方案:
- 删除
libbrokenmodule__pycache__
缓存文件 - 删除
pkgsbrokenmodule-version-build
中的源文件夹 - run
conda update brokenmodule --force-reinstall