最近开始写一个新项(lun)目(zi)正好尝試新一代python包/虚拟环境管理工具,这个工具也是那个逆袭的帅哥程序员Kenneth Reitz写的(即Requests以及一系列优质的python库的作者)目前它已经被纳入pypa下,可以算Production-Ready了通过引入类似于npm的lock文件之类的机制,它能够精确限制依赖的版本解决了只使用requirements.txt文件管理依赖带来的各种坑爹问题。另外也接入叻虚拟环境(virtualenv)管理的功能,这样我们就可以只用这一个工具对对于Python开发一把梭省去了很多麻烦。
除此之外它还加入了在运行中显示酷炫動画和emoji逗你开心这种没什么卵用的功能。
这里记录一下开发中常用的命令基本上用法非常顺应直觉,和通常使用pip + requirements.txt + virtualenv这个组合并没有太大区別更多高端用法,尽在
内容类似下面这样source
部分用来设置仓库地址,packages
部分用来指定项目依赖的包dev-packages
部分用来指定开发环境需要的包,这樣分开便于管理
而Pipfile.lock
中记录了当前环境中安装的依赖的版本号以及哈希,以保证每次装出来的依赖都是一致的
一行命令搞定virtualenv和pipfile的初始化,它会在你的用户目录下对你的virtualenv进行统一管理如果当前目录下有requirements.txt文件,它会非常贴心地帮你自动转换(随后你就可以把requirements.txt扔掉了)
初始囮一个python3的环境
初始化一个python2的环境(不过都已经2018年了,你还要用2吗)
安装指定版本的包安装时加--dev
表示加入到dev环境。
从项目环境中移除某个包
另外Pipefile和Pipefile.lock都会按照你的操作进行自动的更新,如果需要手动修改包的依赖条件手工编辑Pipefile并进行安装即可。
在Dockerfile中安装依赖加--system
参数表示使用pip直接安装相应依赖,不创建虚拟环境
能够更清晰地展示现有依赖包。
更新lock文件锁定当前环境的依赖版本
如果你开发调试时需要配一堆环境变量可以写到.env
文件中,在pipenv用法 shell
进入虚拟环境时它会帮你把这些环境变量加载好,非常方便
例如写一个.env
文件
写起项目来更加优♂雅了,诶嘿嘿~
美中不足PyCharm目前还不支持pipenv用法,因此暂时还需要在PyCharm项目设置里手工指定虚拟环境的路径(在~/.virtualenvs/
下面找)密切关注什么时候他们能把这个东西支持了
更新:PyCharm从2018.2版本开始已经支持pipenv用法啦,赶快升级吧撒花