在python 开发工程中,将遇到两个问题,第一个是版本管理,第二个是包管理。由于python 众多,多是存在2.* 版本和3.* 版本,如何自由切换,的确是头痛的问题,但是python 给出比较好解决方案。
pyenv 就是多版本解决利器,下面个人实践铺开下来讲:
安装 curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
将PYENV_ROOT和pyenv init加入bash的~/.bashrc
echo 'export PATH=~/.pyenv/bin:$PATH' >> ~/.bashrc
echo 'export PYENV_ROOT=~/.pyenv' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc
常用命令:
pyenv install --list # 列出可安装版本
pyenv install <version> # 安装对应版本
pyenv install -v <version> # 安装对应版本,若发生错误,可以显示详细的错误信息
pyenv versions # 显示当前使用的python版本
pyenv which python # 显示当前python安装路径
pyenv global <version> # 设置默认Python版本
pyenv local <version> # 当前路径创建一个.python-version, 以后进入这个目录自动切换为该版本
pyenv shell <version> # 当前shell的session中启用某版本,优先级高于global及local
但是,在实际开发过程中,我们搭建工程,重要是包管理,用pipenv安装相互独立的虚拟环境,pipenv是Python推荐的包管理工具,它综合了 virtualenv , pip 和 pyenv 三者的功能,能够自动为项目创建和管理虚拟环境。类似golang godep/dep,java maven 管理,并且使用起来,更加方便。
pipenv 使用 Pipfile 和 Pipfile.lock 来管理依赖包,并且在使用pipenv添加或删除包时,自动维护 Pipfile 文件,同时生成 Pipfile.lock 来锁定安装包的版本和依赖信息,避免构建错误。相比pip 需要手动维护 requirements.txt 中的安装包和版本,具有很大的进步。
参考 https://github.com/pypa/pipenv
安装方式有多种,比如采用:
curl https://raw.githubusercontent.com/kennethreitz/pipenv/master/get-pipenv.py | python
执行pipenv,查看是否安装成功,如果不成功,可以查看官方文档。
设置这个环境变量 export PIPENV_VENV_IN_PROJECT=1
在使用pipenv 的时候,替换 pipfile 文件 source 为国内镜像
[[source]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
verify_ssl = true
name = "pypi"
在具体项目中,使用 pipenv shell 激活,然后就可以使用命令来安装依赖
比如: pipevn install requests
也可以把requirements.txt
pipenv install -r path/to/requirements.txt
作为整个依赖来安装。