pipenv如何针对不同平台使用同一功能扩展包

夙愿已清 提交于 2019-12-21 01:10:45

场景

在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'
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!