机器学习:软件工程方法与实现
上QQ阅读APP看书,第一时间看更新

2.2.2 Pipenv基础使用和示例

下面我们简述Pipenv常用的命令和使用示例。在此之前使用如下的命令进行安装:


Linux/Windows:pip install pipenv
MacOS:brew install pipenv

主要的命令请参考表2-2(可使用pipenv–help或pipenv–h查看使用帮助),更详细的命令请参考官网。

表2-2 Pipenv主要命令介绍

注意:

1)Pipenv安装虚拟环境有如下几种快捷方式。

·pipenv install不带任何参数,默认克隆系统中的Python版本。

·pipenv--two和pipenv--three分别表示直接克隆系统中2和3版本的Python。当用户使用源码安装了某个版本的Python时,有两种方法可让Pipenv找到路径。

使用--python指定Python路径,比如pipenv--three--python~/python37/install_dir/bin/python3;

将此Python 3软连接到PATH目录,比如/usr/bin/python3。

2)当安装速度较慢时可尝试加入--skip-lock或手动编辑Pipfile更换安装源。安装调试过程可使用——verbose展示更详细的安装信息。

3)pipenv shell进入虚拟环境后,使用exit或快捷键CTRL+D退出虚拟环境。

下面我们使用一个实际的例子来总结本节,本次的需求案例是构建一个最新版的sklearn的虚拟环境。

1)查看当前版本。


#启动Python
[~] # python3.6
Python 3.6.5 |Anaconda, Inc.| (default, Apr 26 2018, 08:42:37) 
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sklearn
>>> print(sklearn.__version__)
0.19.1

2)安装Pipenv。


[~] # pip install pipenv

3)建立项目目录。


[~] # mkdir -p ~/mb/py36_sys; cd ~/mb/py36_sys

4)建立虚拟环境。笔者的系统中包含Python 2和Python 3,所以可以直接使用如下命令建立版本3的环境,该命令将自动生成Pipfile。


[~/mb/py36_sys] # pipenv install –three
[~/mb/py36_sys] # cat Pipfile 
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
[dev-packages]
[packages]
[requires]
python_version = "3.6"

5)安装sklearn。包的版本支持几种指定方式,比如:==、>=、<=、<、~=等。不指定版本时默认为最新版本。


# pipenv install "scikit-learn==0.20.2" 当前最新版本
[~/mb/py36_sys] # pipenv install scikit-learn

6)使用pipenv shell进入虚拟环境查看版本。进入虚拟环境后也可以使用pipenv install。


[~/mb/py36_sys] # pipenv shell
Launching subshell in virtual environment…
...
Python 3.6.5 |Anaconda, Inc.| (default, Apr 26 2018, 08:42:37) 
Type 'copyright', 'credits' or 'license' for more information
IPython 6.4.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import sklearn
In [2]: print(sklearn.__version__)
0.20.2

7)模型开发调试。

8)模型开发完成,对当前环境信息进行快照锁。


pipenv lock

9)输出Pipfile和Pipfile.lock完成项目环境交接。

10)在新环境中使用上述文件,建立一致的虚拟环境。需要注意的是,由于Pipenv需要使用Python基础内核,当在新的主机部署Pipfile中的环境时,需要在新主机上提供对应的Python 2或3。


[~/mb/py36_sys] # mkdir -p ~/mb/py36_new;cd ~/mb/py36_new
[~/mb/py36_new] # cp ~/mb/py36_sys/Pipfile* ~/mb/py36_new
[~/mb/py36_new] # pipenv install

11)验证环境和包版本的一致性。


[~/mb/py36_new] # pipenv shell
Launching subshell in virtual environment…
...
[~/mb/py36_new] ipython
Python 3.6.5 |Anaconda, Inc.| (default, Apr 26 2018, 08:42:37) 
Type 'copyright', 'credits' or 'license' for more information
IPython 6.4.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import sklearn
In [2]: print(sklearn.__version__)
0.20.2

以上只是Pipenv的基础示例,更多的功能和命令请各位读者亲自实践。