![](/img/trans.png)
[英]Is this possible > Sublime3 + a python linter + 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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.