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 环境下有可能会遇到出错。

发表回复

您的电子邮箱地址不会被公开。