pywin32 ImportError:DLL加载失败:找不到指定的模块

GoA*_*o29 1 python winapi pywin32

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

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

我在运行脚本的位置看到了pywintpyes36.dll和。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
Run Code Online (Sandbox Code Playgroud)

我那里有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.
Run Code Online (Sandbox Code Playgroud)

djv*_*jvg 5

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

概括

conda对于以下环境可能的解决方法Python>=3.8

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

细节

pywin32通过安装后,我在 Windows 10 上使用 Python 3.9 新建的(迷你)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 的环境中执行 a 时,才会出现导入错误。Python 3.7(或 2.7)不会出现问题。

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

显然,Python 3.8 改变了 dll 文件的查找方式。此更改已合并到 pywin32 中,但如果混合使用conda和,仍然会造成麻烦pip

有关的: