簡體   English   中英

python xlwings在virtualenv可能嗎?

[英]python xlwings in virtualenv possible?

我嘗試在virtualenv中使用python 3.4.3開始使用xlwings,但是其中一個示例程序出錯,因為它看不到numpy,而numpy已安裝在virtualenv中。 在virtualenv顯示中運行pip freeze (清除了一些顯然不是必需的內容):

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變量的問題,但是在通過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'

我在標准環境中有一個帶有舊xlwings設置的舊python2,因此xlwings在anaconda環境中沒有使用python3設置,因此來了。

我通過更改xlwings用於調用python的路徑來解決,方法是進入vba編輯器,然后選擇導入Excel工作簿的xlwings VBA模塊。 注意,這是您導入到工作簿中的xlwings.bas文件,而不是python模塊。

那里有一個名為Settings的函數,該函數具有一個稱為PYTHON_WIN的變量,您可以將其更改為python.exe所在目錄,以用於您使用的環境。 當我更改時,一切正常。

此解決方案的優點是僅將此python路徑用於此工作簿,這也是一個缺點,我想如果您將工作表發送給要刪除硬編碼路徑的第三方。

從已激活的虛擬環境(具有正確安裝的軟件包)啟動Excel將為xlwings提供正確的環境。

Windows命令提示符的示例:

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

然后打開xlwings XLSM文件並運行。

我遇到了一個異常“異常:不能直接調用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)

xlwings.conf表中只有一個Interpreter屬性對我xlwings.conf

配置表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM