python - pywin32 ImportError: DLL load failed: 找不到指定的模块
问题描述
我正在使用并python 3.6
尝试使用 Outlook 发送电子邮件,但不断收到上述内容。 import
win32com.client
win32
import error
我已经安装pywin32
并pypiwin32
运行了postinstall
脚本(确实看到它说“您没有安装 COM 对象的权限。)
我在运行脚本的位置看到pywintpyes36.dll
and 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.
解决方案
这可能与 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 pywin32
在conda
Python>=3.8 的环境中执行操作时才会出现导入错误。Python 3.7(也不是 2.7)不会出现此问题。
在 Python>=3.8 conda 环境中,conda install pywin32
修复了该问题(而不是使用pip
)。
显然Python 3.8 改变了查找 dll 文件的方式。此更改已包含在 pywin32 中,但如果您混合使用conda
和仍然会引起麻烦pip
。
有关的:
推荐阅读
- python - 异常 str() 失败
- r - 在分组数据框上生成“ecdf”
- haskell - Haskell 获得第一和第七
- angular - 如何使用 mat-select(多选)Angular Material 设置选项真/假
- laravel - 从 , project_user 数据透视表中删除用户
- python - 如何在 matplotlib 中以不同颜色呈现 LaTeX 字符串的子字符串?
- c++ - 如何将 DirectX 共享资源的句柄传递给另一个(不相关的)进程?
- selenium - Selenium:页面 JS 未运行,卡在负载中
- css - glyphicon 和自定义工具提示引导程序 3
- hadoop - Sqoop 导出在命令行中工作,但在 Oozie 工作流中失败