作为一个pythoner,在使用的时候有两个非常头痛的问题:
解释器的版本。2和3之间的差别就不说了,3.X之间也存在一定的区别。记得ubuntu16.04原生是python3.5,但是当时一个代码是需要用3.6,升级到3.6,结果有些其他程序又跑不了。包的版本。这些问题相信大家都有经历,我就不现身说法了。这些问题的终极解决方法,个人认为是docker。但是docker上手不容易,而且安装包的时候要重构镜像,记得之前玩过一段时间,128G的ubuntu根分区硬盘容量告警,才发现临时镜像极其庞大了。anacoda的问题我就不想提了,之前用pytorch的时候被坑惨了。
今天和大家一起来分享最近使用的一个轻量化的解决方案:pyenv+pipenv。
官方:https://github.com/pyenv/pyenv 安装:https://github.com/pyenv/pyenv-installer 命令:https://github.com/pyenv/pyenv/blob/master/COMMANDS.md
官方:https://github.com/pypa/pipenv 文档:https://pipenv-fork.readthedocs.io/en/latest/
如果使用http的镜像,建议将verify_ssl的设为false。
网上其他教程都是要求大家先用pyevn设置local的环境,然后用pipenv来进行包管理。
我本机安装的3.8,但是我的环境要求3.7。我按照网上的教程折腾了半天,发现pipenv在建立虚拟环境的时候用的还是系统的3.8。
我最终的解决方法如下:
从图中我们可以看出,pipenv在建立虚拟环境时,可以与当前局部环境中的python版本不相同。
个人一点不成熟的看法:
pyenv管理全局。实现在同一个系统中安装多个版本的python解释器。pipenv管理局部。实现局部环境中使用指定的python版本和包的版本。