pipenv如何針對不同平臺使用同一功能擴展包

場景

在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'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章