我的pipenv工作流程和方法

参考链接

我的系统:ubuntu16.04
官方文档:https://pipenv.readthedocs.io/en/latest/install/#installing-pipenv
博客:

  • https://www.jianshu.com/p/00af447f0005
  • https://www.cnblogs.com/zhangxinqi/p/9073191.html
  • https://www.cnblogs.com/zingp/p/8525138.html
    pipenv集成了Pipfile(python库依赖关系),pip(安装库),virtualenv(建立独立的python工程环境)。我之前是使用virtualenv和virtualenvwrapper进行管理,但是在Brian中模拟总出莫名奇妙的结果,找不到原因,于是尝试用pipenv换个环境试一下。

使用流程

方法:通过linuxbrew包管理器安装pipenv,再通过pipenv管理虚拟环境。
原因:官方建议使用Homebrew或者Linuxbrew安装pipenv,这样可以保持pipenv以及它的依赖处于一个独立的虚拟环境中,这样就不会对Python的其他安装产生干扰。当然也可以使用pip安装,但是官方提醒由于依赖间的交互或者说交叉,应该限制这种建立Pyhon工作流程的工具的数量,比如virtualenv,pipenv,tox等。试想一下,如果用pip安装pipenv,而pipenv还会安装一个版本的pip,直观感觉有有点不合理,使用brew安装可以保持pipenv的独立性。另外brew安装的包都是在当前用户下,不需要sudo。

安装linuxbrew

参考链接:https://github.com/Linuxbrew/brew
LinuxBrew是Mac OS X上HomeBrew包管理器的Linux版本,它可以从源文件安装软件包,而且层次在系统的默认包管理器之上 (e.g. “apt/deb” in Debian/Ubuntu and “yum/rpm” in CentOS/RedHat)。
我安装linuxbrew的方法是按照github官方说明来的,没有按照这一类先下载再设置环境变量的方法
具体命令如下:

$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
# linuxbrew默认会安装在'/home/linuxbrew/.linuxbrew',默认安装有可以使用更多的二进制包例如bottles

下面是安装结果截图:
我的pipenv工作流程和方法_第1张图片
然后我依照上图中的建议添加了环境变量,

echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile

然后将环境变量添加到我的用户.bashrc中,然后执行了’brew install gcc’。至此linuxbrew安装完成,进行测试。

brew install hello

使用linuxbrew安装pipenv

方法很简单:

brew install pipenv
# 我安装的是pipenv, version 2018.11.26,python版本是3.7

安装完成的截图:
我的pipenv工作流程和方法_第2张图片
我看到还可以安装python2,但是尝试了后在建立工程环境的时间会出错,应该是pipenv的版本冲突导致的,不必安装python@2。后来想了一下确实不应该安装,pipenv只是个管理工具,只要是系统里安装的python,无论是系统自带的,anaconda的,pyenv安装的pipenv都可以扫描到并用于建立虚拟环境。

pipenv建立工程环境

Pipenv是基于工程目录进行环境建立的,一个文件夹一个工程环境,文件夹移动了环境就不成立了。在建立具体的环境之前我首先设置了一个环境变量’PIPENV_VENV_IN_PROJECT’为’1’,这样pipenv建立的虚拟环境就存放在工程文件夹下了,可以随工程文件一起移动,具体的方法是在用户的’.bashrc’中增加了’export PIPENV_VENV_IN_PROJECT=1’语句。下面的流程就是,建立文件夹,建立工程环境,然后安装需要的模块,然后是激活形成一个独立的python以及各种版本的包的独立的虚拟环境。这几步操作没有争议,参照博客就可以。我的pipenv工作流程和方法_第3张图片
需要提一下的是我建立的第一个虚拟环境是python2.7的(克隆的基础是我系统自带的python2.7),执行如下命令:

pipenv --python 2.7

然后报出了一个warning,手动修改一下Pipfile文件中python的版本,然后执行’pipenv check’就可以去除这个warning。除了第一次建立虚拟环境后来就没有出现这种情况了。

写在最后

pipenv还比较好用,我觉得相比于其他python版本管理的工具优势应该在于对于依赖和工程迁移的支持。但是我在使用中指定安装一些版本的模块(例如numpy、matplotlib这样的)反而被它“强扭”成它认为兼容的版本。pipenv在对于python版本的指定上命令是会自行查找系统内可用的版本的,不需要具体指明路径。

最后我在Brian模拟中遇到的问题也没解决,这样就确定不是环境的问题,因为我在系统自带的python中,virtualenvwrapper和pipenv的python环境中都尝试了,结果是一样的。

这里有很重要的一点提示:系统自带的python最好不要动,我曾经在系统python中替换过numpy的版本,重启后系统立马就报了错,还好记得原来的版本,又恢复了。

你可能感兴趣的:(python学习笔记,工具学习)