2

我尝试在 virtualenv 中使用 python 3.4.3 开始使用 xlwings,但是其中一个示例程序出错,因为它看不到 numpy,它在 virtualenv 中非常安装。pip freeze在 virtualenv 节目中运行(清除了一些明显不必要的内容):

appscript==1.0.1
lxml==3.4.4
numpy==1.9.2
pandas==0.16.1
psutil==3.0.1
ptyprocess==0.5
pyparsing==2.0.3
python-dateutil==2.4.2
virtualenv==13.0.3
virtualenv-clone==0.2.5
virtualenvwrapper==4.6.0
xlrd==0.9.3
XlsxWriter==0.7.3
xlwings==0.3.5

我不确定设置PYTHON_MAC到我的 3.4.3 安装位置(通过 Homebrew 完成)是否会解决这个问题,因为站点包的位置在其他地方。

是否可以从 virtualenv 运行 xlwings 或者我是否需要在系统范围的站点包中安装我想要的包?

4

5 回答 5

6

您需要将PYTHON_MAC(或PYTHON_WIN)的位置设置为您的 virtualenv 的位置。例如PYTHON_MAC = ".../env/bin/python"

于 2015-07-06T07:27:57.683 回答
2

从激活的虚拟环境(带有适当安装的软件包)启动 Excel 将为 xlwings 提供正确的环境。

Windows 命令提示符的示例:

C:\code\xlwings>.\venv\Scripts\activate
(venv) C:\code\xlwings> "C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE"

然后打开您的 xlwings XLSM 文件并运行。

于 2019-02-20T02:14:48.317 回答
1

您好解决了一个类似的问题,如@Felix Zumstein 建议的那样更改 PYTHON_WIN 变量,但是在通过 xlwings.base 文件导入您的 Excel 工作簿的 xlwings VBA 模块中。

我的问题是尝试在 anaconda 环境中使用 Anaconda 包通过 python3 设置运行 xlwings。

当我尝试运行 xlwings 快速入门页面http://xlwings.org/quickstart/中描述的演示时,出现以下错误

Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\PHCostello\Documents\UbuntuHome\Projects\XLWings\mymodule.py", line 6, in rand_numbers
wb = Workbook.caller()  # Creates a reference to the calling Excel file
AttributeError: type object 'Workbook' has no attribute 'caller'

我在标准环境中有一个旧的 python2 和旧的 xlwings 设置,所以 xlwings 没有在 anaconda 环境中使用 python3 设置。

我通过进入 vba 编辑器并选择导入 Excel 工作簿的 xlwings VBA 模块来更改 xlwings 用于调用 python 的路径。请注意,这是您导入工作簿的 xlwings.bas 文件,而不是 python 模块。

那里有一个名为 Settings 的函数,它有一个名为 PYTHON_WIN 的变量,您可以将其更改为您的 python.exe 用于您使用的环境的目录。当我改变一切工作正常。

此解决方案的优点是仅对此工作簿使用此 python 路径,我猜如果您将工作表发送给您想要删除硬编码路径的第三方,这也是一个缺点。

于 2015-08-09T05:36:08.577 回答
0

工作表中只有一个Interpreter属性xlwings.conf对我有用。

配置表

于 2019-07-05T09:57:58.567 回答
0

我遇到了异常“异常:不得直接调用 Workbook.caller()。通过 Excel 调用或首先使用 Book.set_mock_caller() 设置模拟调用者。” 在尝试在 conda 环境中使用 XLWings 时,此问题尚未解决。所以这是解决方案,首先从 conda env 启动 Excel,如下所示:

(env_for_python_36) C:\Users\ashish.jain\Desktop>"C:\Program Files\Microsoft Office\Office16\EXCEL.exe"

然后,在加载 Excel 工作表的 Python 文件中,编写如下代码:

xlsm_path = r'C:\Users\ashish.jain\Desktop\Data.xlsm'
xlsm_path = xlsm_path.replace('\\', '/')
wb = xw.Book(xlsm_path)
于 2019-03-12T12:23:53.007 回答