場景
在Windows下開發的Python應用程序時,有些擴展包不能直接安裝,需要從第三方下載編譯好的擴展包導入安裝。而對於Linux系統來說,可以直接pip安裝。
那麼如何解決不同平臺使用不同的安裝擴展包呢,除了編寫兩個 requirement.txt 文件以外。還可以使用pipenv工具,在Pipfile文件裏做一些配置。之後一句命令 pipenv install
即可。
解決方案
下面以 pymssql 爲例,pymssql Windows擴展包我已經提前下載好並放在 install/ 目錄下。(下載地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pymssql)
一般來說,輸入下面命令行即可自動安裝whl文件:
pipenv install ./install/pymssql-2.1.4-cp36-cp36m-win_amd64.whl
而Linux可以直接安裝:
pipenv install pymssql
因此,我們需要修改Pipfile配置,爲避免pymssql名稱重複,修改Windows下的pymssql的擴展包爲 pymssql-win,然後使用 os_name
判斷系統。
Pipfile示例:
[[source]]
name = "pypi"
url = "https://mirrors.aliyun.com/pypi/simple/"
verify_ssl = true
[packages]
pymssql-win= {path = "./install/pymssql-2.1.4-cp36-cp36m-win_amd64.whl", os_name = "=='nt'"}
pymssql = {version = "*", os_name = "=='posix'"}
[requires]
python_version = "3.6"
最後可以 pipenv lock
一下,生成Pipfile.lock,生成當前環境的快照。
os_name可選項:
nt
: Windows系統posix
: Linux系統java
: Java虛擬機
查看方式
>>> import os
>>> os.name
'nt'