在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'