特别声明:本文不是安装指南,仅仅是安装过程中解决问题的记录,各人可能碰到不同的问题,解决思路也不会相同。本人是参考了网上的资料,经过反复才解决。故此把解决过程记录于此。有用可以拿去,没用的话就需要自己再去摸索了
使用 Python,免不了需要与excel打交道,试过xlsxwriter、openpyxl等以及自带一些功能,总有些不满意。
结果就发现了 xlwings 。
根据目前的文章,xlwings性能综合来看几乎是最优秀的,而且xlwings可以实现通过Excel宏调用Python代码。
Excel+Python,简直法力无边(具体没有使用,准备实际使用后再写后续文章)
安装原来是很简单的事情:
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的问题是公共。网上有一些解决办法,可惜测试后都发现一些问题。本文也算是一个补充的吧。
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(准备测试是不是说的那么强大,本文就此打住)
**最后的补充:上述过程完成后,真正运行时如果还是会出现错误,找不到python命令,此时,可以在interpreter中输入pythonw.exe所在的目录 , 如 d:\python\pythonw.exe **
在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)
注:这种说法与方法一有点类似,说到了一点原理,但语焉不详,如果不是看了方法一,可能会觉得莫名其妙,但这里解释了一个原因,可能是版本问题,具体就不研究了
我们执行时报错了,下面来说解决方法。
参考网站:
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。
注:经测试,本方法不能解决问题,依旧报同样错误。但既然人家说了,应该还是有用,而且也是方法一种需要的一个方面,也许有人用此办法就可以吧。