Python xlwings不';无法识别导入的模块打开

Python xlwings不';无法识别导入的模块打开,python,excel,openturns,Python,Excel,Openturns,我使用xlwings使用Python脚本设置了一个电子表格工具。到目前为止一切都很好,我正在用Spyder从Anaconda运行它。 我可以从Excel(使用VBA连接)和Python运行脚本,两者都可以正常工作 现在我正在尝试改进它,为此我使用了OpenTURNS模块中的函数。所以我添加了一行:导入openturns作为ot。OpenTURNS安装正确,因为我可以在Spyder中使用它的功能 从Spyder,我可以运行脚本并将结果写入Excel,但如果从Excel运行脚本,则会出现错误: Tr

我使用xlwings使用Python脚本设置了一个电子表格工具。到目前为止一切都很好,我正在用Spyder从Anaconda运行它。 我可以从Excel(使用VBA连接)和Python运行脚本,两者都可以正常工作

现在我正在尝试改进它,为此我使用了OpenTURNS模块中的函数。所以我添加了一行:
导入openturns作为ot
。OpenTURNS安装正确,因为我可以在Spyder中使用它的功能

从Spyder,我可以运行脚本并将结果写入Excel,但如果从Excel运行脚本,则会出现错误:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "DecisionTool.py", line 12, in main
    import openturns as ot
ImportError: No module named openturns
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“DecisionTool.py”,第12行,主目录
将openturns作为ot导入
ImportError:没有名为openturns的模块
因此,出于某种原因,虽然Spyder可以找到openturns模块,但如果我执行完全相同的操作并从Excel运行它,它将找不到它。 考虑到我仍然可以从Spyder运行一切,Excel和Python之间的连接应该会有一些错误。然而,据我所知,VBA调用python之后,python就接管了它,所以我不知道该去哪里找。
希望任何人都能提供帮助。

当您通过xlwings VBA模块执行Python代码时,默认的Python解释器将启动,即与在命令提示下键入
Python
相同。因此,首先要检查的是,如果在命令提示符下启动python并尝试导入
openturns
,会发生什么情况。如果找不到它,那么Spyder要么正在使用另一个Python安装,要么Spyder正在某处添加openturns安装的路径


如果Spyder使用的安装与您的默认安装不同,您可以更改默认安装或设置VBA模块中解释器的路径,如前所述。

我已经在VBA模块中将“PYTHON_DIR=”“”更改为“PYTHON_DIR=“c:\Users\myusername\AppData\Local\Continuum\Anaconda\”。根据代码中的注释,应该调用Anaconda而不是我的默认Python。但显然不是,如果我检查另一个模块,我会得到同样的错误。因此,即使我将Anaconda路径放在VBA中,它仍然调用默认的Python安装。根据你的链接,我的xlwings VBA模块可能已经旧了,所以我重新加载了它,并将“PYTHON_WIN”设置为我的Anaconda路径,但这也没有帮助。我尝试了一些其他方法,如果我将
OPTIMIZED_CONNECTION
设置为
True
,它运行平稳。问题很可能出现在以下代码片段中:
ExitCode=Wsh.run(“cmd.exe/C”&DriveCommand&&RunCommand&&wbook\u FULLNAME&&wbook\u from\u xl“2>”&LOG\u FILE&&witonreturn)
最可能的原因是调用cmd.exe并且没有将
PYTHON\u WIN
作为输入,它仍然调用默认解释器,不管您在
函数设置中设置了什么。
。问题已解决,在问题解决后的第一个帖子中添加了解决方案。问题在于
PYTHON_-WIN
中定义的路径被定义为
c:\restofpath
,然而,xlwings VBA模块有一个如下形式的条件:
如果左$(PYTHON_-WIN,2)像“[a-Z]:”那么路径在其中被调整。但是,由于条件是以大写字母定义的,因此路径应输入为
C:\restofpath
,并带有驱动器的大写字母。如果可以捕获,将尝试在未来版本中修复此问题