首页 > 解决方案 > pywin32 ImportError: DLL load failed: 找不到指定的模块

问题描述

我正在使用并python 3.6尝试使用 Outlook 发送电子邮件,但不断收到上述内容。 import win32com.clientwin32import error

我已经安装pywin32pypiwin32运行了postinstall脚本(确实看到它说“您没有安装 COM 对象的权限。)

我在运行脚本的位置看到pywintpyes36.dlland pyhoncom36.dll

我做了一些搜索,似乎找不到我所缺少的东西。是我无法安装 COM 对象的事实吗?任何帮助将不胜感激,谢谢。

[编辑]

我正在使用 venv,并且已经使用py -m pip install pywin32和安装了两个库py -m install pypiwin32。我确认我在我的 venv 中的“site-packages”文件夹中看到了安装。

我的进口:

import sys
sys.path.append("C:\path\venv\Lib\site-packages")
import tkinter as tk
import getpass
import os.path
import time
import os
import win32com.client as win32
import sqlite3
from datetime import datetime
from functools import partial

我有,sys.path.append否则根本找不到模块。

完整的错误信息:

Traceback (most recent call last):
File "C:\path\program.py", line 8, in <module>
import win32com.client as win32
File "C:\path\venv\Lib\site-packages\win32com\__init__.py", line 5, in <module>
from win32 import win32api
ImportError: DLL load failed: The specified module could not be found.

标签: pythonwinapipywin32

解决方案


这可能与 OP 没有直接关系,但可能对根据标题最终来到这里的其他人有所帮助。

概括

conda环境的可能解决方法Python>=3.8

  • 不要pip install pywin32,但是
  • DO conda install pywin32(例如来自conda-forge

细节

pywin32在通过以下方式安装后,我在 Windows 10 上使用 Python 3.9 新创建的 (Mini-)Conda 环境中遇到了以下错误pip

ImportError: DLL load failed while importing win32file: The specified module could not be found.

pywin32 安装说明明确提到了此类问题,并且有几个相关问题

但是,就我而言,发生了其他事情。

以下是一些有趣的观察结果:

  • 我有许多其他预先存在的 conda 环境,python 版本范围从 2.7 到 3.8,以及相应pywin32的版本,其中没有出现问题(刚刚验证了这一点)。
  • 所有这些环境都有自己的pywintypesXX.dll等,但它们和平共处。
  • pywintypesXX.dll我的system32文件夹里没有。
  • 我从来不需要运行pywin32_postinstall 脚本

事实证明,在我的系统上,只有当我pip install pywin32condaPython>=3.8 的环境中执行操作时才会出现导入错误。Python 3.7(也不是 2.7)不会出现此问题。

在 Python>=3.8 conda 环境中,conda install pywin32修复了该问题(而不是使用pip)。

显然Python 3.8 改变了查找 dll 文件的方式。此更改已包含在 pywin32 中,但如果您混合使用conda和仍然会引起麻烦pip

有关的:


推荐阅读