【问题标题】:pywin32 ImportError: DLL load failed: The specified module could not be foundpywin32 ImportError: DLL load failed: 找不到指定的模块
【发布时间】:2020-06-30 04:13:33
【问题描述】:

我正在使用python 3.6 并尝试将import win32com.client 设置为win32 以便能够发送带有Outlook 的电子邮件,但继续收到上述import error

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

我在运行脚本的位置看到了pywintpyes36.dllpyhoncom36.dll

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

[编辑]

我正在使用 venv,并已使用 py -m pip install pywin32py -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.

【问题讨论】:

  • 你是如何安装这些库的?你在哪里得到这个错误?说到这里,请分享整个错误信息。
  • 我使用 pip -m install pywin32 和 pip -m install pypiwin32 将它们安装在 venv 中。整个错误消息:Traceback (most recent call last): File "C:\path\program.py", line 9, in &lt;module&gt; import win32com.client as win32 File "C:\path\venv\Lib\site-packages\win32com\__init__.py", line 5, in &lt;module&gt; from win32 import win32api ImportError: DLL load failed: The specified module could not be found.
  • 我的 import win32com.client as win32 代码行出现错误(上述错误消息中引用的第 9 行)
  • 你现在在用anaconda吗?
  • 我不是。我是 python 新手,对 anaconda 不太熟悉,在这种情况下会有帮助吗?

标签: python winapi pywin32


【解决方案1】:

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

总结

conda 环境与Python&gt;=3.8 的可能解决方法:

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

详情

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

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

pywin32 installation instructions明确提到了这类问题,还有several related issues

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

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

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

事实证明,在我的系统上,只有在使用 Python>=3.8 在conda 环境中执行pip install pywin32 时才会出现导入错误。 Python 3.7(也不是 2.7)不会出现这个问题。

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

显然是Python 3.8 changed the way dll files are found。此更改为incorporated in pywin32,但如果您将condapip 混合使用,仍会造成问题。

相关:

【讨论】:

    猜你喜欢
    • 2020-12-04
    • 2020-07-02
    • 2015-12-16
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多