python virtualenv 中的 xlwings 可能吗?

python xlwings in virtualenv possible?

我尝试在 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 或者我是否需要在系统范围的站点包中安装我想要的包?

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

您好解决了一个类似的问题,按照@Felix Zumstein 的建议更改 PYTHON_WIN 变量,但是在通过 [=26= 导入到您的 excel 工作簿的 xlwings VBA 模块中] 文件。

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

当我尝试 运行使用 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 路径,这也是一个缺点我想如果你把你的 sheet 发送给你想要删除的第三方硬编码路径。

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

Windows 命令提示符示例:

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

然后打开你的 xlwings XLSM 文件和运行。

我在 conda 环境中尝试使用 XLWings 时遇到异常 "Exception: Workbook.caller() must not be called directly. Call through Excel or set a mock caller first with Book.set_mock_caller().",此问题尚未解决。所以这是解决方案,首先像这样从 conda env 启动 Excel:

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

然后,在加载Excelsheet的Python文件中,编写如下代码:

xlsm_path = r'C:\Users\ashish.jain\Desktop\Data.xlsm'
xlsm_path = xlsm_path.replace('\', '/')
wb = xw.Book(xlsm_path)

xlwings.conf sheet 中只有一个 Interpreter 属性 对我有用。