ImportError: DLL load failed while importing shell: The specified procedure could not be found.
conda 环境中安装的包依赖了 pywin32 时,运行代码会出现“ImportError: DLL load failed while importing shell: The specified procedure could not be found.
”异常。
例如:
Traceback (most recent call last): File "E:\ProgramData\Miniconda3\envs\dvc\lib\runpy.py", line 197, in _run_module_as_main return _run_code(code, main_globals, None, File "E:\ProgramData\Miniconda3\envs\dvc\lib\runpy.py", line 87, in _run_code exec(code, run_globals) File "E:\ProgramData\Miniconda3\envs\dvc\Scripts\dvc.exe\__main__.py", line 7, in <module> File "E:\ProgramData\Miniconda3\envs\dvc\lib\site-packages\dvc\cli\__init__.py", line 216, in main if analytics.is_enabled(): File "E:\ProgramData\Miniconda3\envs\dvc\lib\site-packages\dvc\analytics.py", line 50, in is_enabled Config(validate=False).get("core", {}).get("analytics", "true") File "E:\ProgramData\Miniconda3\envs\dvc\lib\site-packages\dvc\config.py", line 105, in __init__ self.load(validate=validate, config=config) File "E:\ProgramData\Miniconda3\envs\dvc\lib\site-packages\dvc\config.py", line 151, in load conf = self.load_config_to_level() File "E:\ProgramData\Miniconda3\envs\dvc\lib\site-packages\dvc\config.py", line 285, in load_config_to_level if merge_level in self.files: File "E:\ProgramData\Miniconda3\envs\dvc\lib\site-packages\funcy\objects.py", line 28, in __get__ res = instance.__dict__[self.fget.__name__] = self.fget(instance) File "E:\ProgramData\Miniconda3\envs\dvc\lib\site-packages\dvc\config.py", line 120, in files files = { File "E:\ProgramData\Miniconda3\envs\dvc\lib\site-packages\dvc\config.py", line 121, in <dictcomp> level: os.path.join(self.get_dir(level), self.CONFIG) File "E:\ProgramData\Miniconda3\envs\dvc\lib\site-packages\dvc\config.py", line 116, in get_dir return site_config_dir(cls.APPNAME, cls.APPAUTHOR) File "E:\ProgramData\Miniconda3\envs\dvc\lib\site-packages\appdirs.py", line 237, in site_config_dir path = site_data_dir(appname, appauthor) File "E:\ProgramData\Miniconda3\envs\dvc\lib\site-packages\appdirs.py", line 134, in site_data_dir path = os.path.normpath(_get_win_folder("CSIDL_COMMON_APPDATA")) File "E:\ProgramData\Miniconda3\envs\dvc\lib\site-packages\appdirs.py", line 480, in _get_win_folder_with_pywin32 from win32com.shell import shellcon, shell ImportError: DLL load failed while importing shell: The specified procedure could not be found.
需要将 conda 环境目录下“Lib\site-packages\pywin32_system32\
”下的所有 dll 文件复制到 “Library\bin\
” 下。
查看 conda 环境目录路径可以通过 “conda info -e
” 来看。不过需要在 base 环境下看,因为 info 命令会调用 pywin32 库,不在 base 环境下有可能会遇到出错。