xlwings 安装及排错: DLL load failed while importing win32api

特别声明:本文不是安装指南,仅仅是安装过程中解决问题的记录,各人可能碰到不同的问题,解决思路也不会相同。本人是参考了网上的资料,经过反复才解决。故此把解决过程记录于此。有用可以拿去,没用的话就需要自己再去摸索了

使用 Python,免不了需要与excel打交道,试过xlsxwriter、openpyxl等以及自带一些功能,总有些不满意。
结果就发现了 xlwings 。

根据目前的文章,xlwings性能综合来看几乎是最优秀的,而且xlwings可以实现通过Excel宏调用Python代码。
Excel+Python,简直法力无边(具体没有使用,准备实际使用后再写后续文章)
xlwings 安装及排错: DLL load failed while importing win32api_第1张图片

安装原来是很简单的事情:
1、安装 xlwings

pip install xlwings

2、安装xlwings的 Excel集成插件

xlwings addin install

以为大功告成,结果一下子杯具了:

Traceback (most recent call last):
  File "D:\python\Scripts\xlwings-script.py", line 6, in 
    from xlwings.command_line import main
  File "D:\python\lib\site-packages\xlwings\__init__.py", line 42, in 
    from . import _xlwindows as xlplatform
  File "D:\python\lib\site-packages\xlwings\_xlwindows.py", line 10, in 
    import win32api
ImportError: DLL load failed: 找不到指定的程序。

经过一番搜索,最终确认这不是 xlwings的专有问题,而是由于其引用了pywin32 引起的,pywin32的问题是公共。网上有一些解决办法,可惜测试后都发现一些问题。本文也算是一个补充的吧。

方法一 https://www.jianshu.com/p/e0df87f09b8c

xlwings是Python中操作Excel的一个第三方库,支持.xls读写,.xlsx读写,操作非常简单,功能也很强大
xlwings与VBA的配合非常完美,你可以在python中调用VBA,也可以在VBA中使用python编程,这些通过xlwings都可以巧妙实现。
先说装这个xlwings碰到个神坑:

用pip install pywin32装完之后错误就来了

DLL load failed while importing win32api: 找不到指定的程序。
md搞死我了

查不到,再查,再查,再查。。。

解决方法:https://www.cnblogs.com/Swalllow/p/11711750.html
找到文件pywin32_postinstall.py的路径,

由于安装路径不同,可能位置不一样,可以在你安装python的文件夹搜索这个文件,

一般在安装文件下的Scripts文件里,用cmd进入这个Scripts文件夹

如cd/d D:\install\python3.8\Scripts

在路径下运行python pywin32_postinstall.py -install

再检查一次是否成功

芜湖~,居然好了

该方法可行,不过需要有些额外的工作,结果如下:

Scripts 目录在python的目录下(不是lib 下 sites-packages)
里面可以找到文件 pywin32_postinstall.py
在此目录下运行命令 : python pywin32_postinstall.py -install
我的是python 3.7,结果如下:

Parsed arguments are: Namespace(destination='D:\\python\\Lib\\site-packages', install=True, quiet=False, remove=False, silent=False, wait=None)
Copied pythoncom37.dll to C:\Windows\system32\pythoncom37.dll
Copied pywintypes37.dll to C:\Windows\system32\pywintypes37.dll
Registered: Python.Interpreter
Registered: Python.Dictionary
Registered: Python
-> Software\Python\PythonCore\3.7\Help[None]=None
-> Software\Python\PythonCore\3.7\Help\Pythonwin Reference[None]='D:\\python\\Lib\\site-packages\\PyWin32.chm'
Registered help file
Pythonwin has been registered in context menu
Creating directory D:\python\Lib\site-packages\win32com\gen_py
Can't install shortcuts - 'C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Python 3.7' is not a folder
The pywin32 extensions were successfully installed.

重新运行 xlwings addin install
依然有错误:

[Errno 2] No such file or directory: 'C:\\Users\\admin\\AppData\\Roaming\\Microsoft\\Excel\\XLSTART\\xlwings.xlam'

xlwings.xlam 在 安装包的addin目录下,例如: \python\Lib\site-packages\xlwings\addin

把它拷贝到提示错误的目录下(我发现还需要检录 XLSTART 目录,可能其他人不同吧)

再次运行,终于成功了

(base) D:\python> xlwings addin install
Successfully installed the xlwings add-in! Please restart Excel.

打开 excel 发现多了插件 xlwings(准备测试是不是说的那么强大,本文就此打住)

xlwings 安装及排错: DLL load failed while importing win32api_第2张图片
**最后的补充:上述过程完成后,真正运行时如果还是会出现错误,找不到python命令,此时,可以在interpreter中输入pythonw.exe所在的目录 , 如 d:\python\pythonw.exe **
xlwings 安装及排错: DLL load failed while importing win32api_第3张图片

方法二 https://www.codingdict.com/questions/166465

在Admin命令提示符下运行Scripts \ pywin32_postinstall.py -install

参考:https /github.com/mhammond/pywin32/issues/1431

编辑:用户@JoyfulPanda发出警告:

以管理员权限运行此脚本还将把pythoncom37.dll,pywintypes37.dll(与pywin32版本相对应)复制到中C:\WINDOWS\system32,这将有效地覆盖Anaconda中已经存在的相应DLL版本。稍后在Windows上打开“开始菜单>
Anaconda3(64位)> Anaconda提示(a_virtual_env_name)”时,这会引起问题。默认情况下,至少Anaconda
2019.07已安装pywin32 223。Pywin32 224可以工作,但是225-228导致Anaconda出现问题(2019.07)

注:这种说法与方法一有点类似,说到了一点原理,但语焉不详,如果不是看了方法一,可能会觉得莫名其妙,但这里解释了一个原因,可能是版本问题,具体就不研究了

方法三 https://blog.csdn.net/yl20175514/article/details/82981087

我们执行时报错了,下面来说解决方法。
参考网站:

win32api pywin32 安装后出现 ImportError: DLL load failed_mengfanteng的博客-CSDN博客
win32api pywin32 安装后出现 ImportError: DLL load failed_李强_新浪博客

找到我们安装python的文件夹,在Lib文件中找到site-packages\pywin32_system32

D:\Program Files (x86)\Python\Python36\Lib\site-packages\pywin32_system32

把里面的所有的文件复制到:C:\Windows\System32

现在,问题解决。无需重新打开DOS窗口,直接执行:scrapy bench。

注:经测试,本方法不能解决问题,依旧报同样错误。但既然人家说了,应该还是有用,而且也是方法一种需要的一个方面,也许有人用此办法就可以吧。

最后希望大家都能解决自己的问题,尽信书不如无书,还是要多实践才行,哪怕是现在百度如此发达的时代!

你可能感兴趣的:(Excel,Python,笔记,python,开发语言)