2021年7月31日 星期六

Thonny 離線安裝 Python 套件的問題

因為微軟將於 2022 年 6 月 15 日終止對 IE 的更新支援, 之前幫公司寫的網頁版程式屆時就無法使用了 (因為使用了一些 ActiveX 元件), 所以必須超前佈署, 改用 Python 來寫個替代的作業輔助軟體. 但由於資安限制, 無法用 pip 直接安裝所需套件, 必須下載 whl 檔進行離線安裝, 忙了兩天終於在昨天搞定了. 

我會用到的主要套件包括用來進行 SSH 連線的 paramiko, 還有網路爬蟲用的 requests, BeautifulSoup, 以及資料科學四大天王, Numpy, Pandas, Matplotlib, 與 Scipy 等等. 由於離線安裝要考慮到相依套件問題, 例如 Pandas 並不是只下載 Pandas 的 whl 檔就可以了, 還要先下載安裝完它的相依套件後才能順利安裝 Pandas. 

我打算使用 Thonny 來開發, 所以先安裝最新版 Thonny, 它目前內建的是 Python 3.7. 安裝程序則參考了下面這篇空大老師吳俊逸博士的文章 : 


我先到 PyPi 網站依序下載這些套件的 whl 檔, 但要先確認 Python 直譯器版本與 32(x86)/64(amd) 位元, 因為有些套件有分版本與位元數, 有些則沒有. 下錯 whl 檔安裝會失敗, 例如我的 Thonny 內建直譯器是 3.7 版, 下載非 3.7 版的 Numpy 就無法安裝, 同樣是 3.7 版, 下載 64 位元版也是不行, 而是要 32 位元版 : 





不過我照此程序安裝發現作者的這張列表寫得並不完全, 還有些其他相依套件漏列, 我依據安裝錯誤訊息下載闕漏套件來回用隨身碟複製到主機好幾次才完成整個常用套件離線安裝作業. 

安裝順序如下 : 

1. SSH 工具 (paramiko) :
    (1). pyasn1
    (2). bcrypt
    (3). PyNaCl
    (4). paramiko  

2. 網路爬蟲 : 
   (1). requests
   (2). urllib3  

3. 資料科學 :
   (1). numpy  
   (2). pyparsing
   (3). pytz
   (4). setuptools
   (5). six
   (6). python_dateutil
   (7). cycler
   (8). Pillow
   (9). kiwisolver
   (10). matplotlib  
   (11). pandas  

4. 科學計算 : 
   (1). mpmath 
   (2). sympy    
   (3). scipy    

5. 機器學習 (scikit-learn & tensorflow 2) : 
   (1). threadpoolctl 
   (2). joblib 
   (3). Scikit-learn   
   (4). termcolor
   (5). typing-extensions (3.7.4)
   (5). tensorflow

6. 自然語言處理 (SpaCy&NLTK) :
   (1). wasabi
   (2). catalogue
   (3). srsly 
   (4). packaging
   (5). typing-extensions (3.7.10)
   (6). pydantic
   (7). spacy-legacy
   (8). murmurhash
   (9). blis
   (10). cymem
   (11). preshed
   (12). thinc
   (13). colorama
   (14). click  (v7.1.2)
   (15). typer
   (16). tqdm
   (17). markupSafe
   (18). Jinja2
   (19). smart-open
   (20). pathy
   (21). idna
   (22). charset-normalizer
   (23). certifi
   (24). requests
   (25). Spacy   
   (26). regex
   (27). nltk   

先在可連網電腦下載如上的所有套件, 然後複製到目的地電腦上依序安裝即可. 注意, SpaCy 的相依套件 click 版本有限制, PyPi 上只提供最新 8 版, 必須到加州大學爾灣分校網站下載 7.1.2 版才能順利完成安裝 (click 是 typer 的相依檔案) :

# click‑7.1.2‑py3‑none‑any.whl

其次, 有些相依套件有版本要求, 有的不能太新, 例如 SpaCy 與 TensorFlow 都需要用到 typing-extensions 但 TensorFlow 的 typing-extensions 要求的是 3.7.4 版, 若安裝 Pypi 上最新的 3.10.0 版不能用, 要到加州大學爾灣分校網站下載 : 

# typing_extensions‑3.7.4.1‑py2‑none‑any.whl

沒有留言 :