使用 pyenv, pipenv 打造一个完美的 Python 开发环境

pyenv 可以很方便的管理多版本 Python, pipenv 则可以很方便管理软件包.

zsh

zsh 是 shell 语言类型, 兼容 bash, 提供强大的命令行功能, 比如 Tab 补全, 自动纠错. 缺点是配置太麻烦, 但我们可以使用 oh-my-zsh 便捷的完成配置. 你也可以选择不安装.

安装 zsh

1
$ sudo apt install zsh

替换 bash

1
$ chsh -s /bin/zsh

输入$ exec "$SHELL" 或重启终端, 再次打开即为 zsh.
注意: 使用 bash 时, 配置文件是 ~/.bashrc, zsh 的配置文件是 ~/.zshrc

安装 oh-my-zsh

1
$ cul -L http://install.ohmyz.sh | sh

安装完成后, 重启终端就能看到变化了.

~/.zshrc 设置

.zshrc 是 zsh 的配置文件, 可以很方便的添加一些 alias 设置, 比如:

1
alias st = 'open -a "Sublime Text"'

更换主题:

1
$ vi ~/.zshrc

可以去 此页面 预览主题样式, 推荐下面三个比较好看的主题.

1
2
3
ZSH_THEME="bira"
# ZSH_THEME="avit"
# ZSH_THEME="bureau"

更多设置方法请自行查询.

pyenv

pyenv 用来管理 Python 版本; 安装, 切换不同的 Python 版本将变得非常容易.

下载 pyenv

1
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv

更改环境变量

zsh:

1
2
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc

bash:

1
2
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc

初始化 pyenv

zsh:

1
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.zshrc

bash:

1
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bashrc

重启 shell

1
$ exec "$SHELL"

查看可以安装的 Python 版本

1
$ pyenv install -l

安装依赖组件

1
2
3
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev python-openssl git

安装 Python

1
2
$ pyenv install 2.7.15
$ pyenv install 3.7.0

查看已安装的 Python 版本

1
$ pyenv versions

切换 Python 版本

global 更改全局设置, local 更改局部(文件夹内)设置.

1
2
$ pyenv global 3.7.0
$ pyenv local 2.7.15

pipenv

pipenv 用来管理 Python 安装的包.

安装 pipenv

1
$ pip install pipenv

建立 Project 目录

1
2
$ mkdir myProject
$ cd myProject

初始化 Python 环境

1
2
3
$ pipenv --three  # 使用系统中的 Python 3 来创建虚拟环境
$ pipenv --two # 使用系统中的 Python 2 来创建虚拟环境
$ pipenv --python 3.7.0 # 指定系统中的 Python 3.7.0 来创建虚拟环境

安装包

1
$ pipenv install Django

or

1
$ pipenv install -r requirements.txt

查看已安装的包

1
$ pipenv graph

运行 pipenv shell(进入虚拟环境, 根据文件夹来确定)

1
$ pipenv shell

删除包

1
$ pipenv uninstall Django

删除虚拟环境

1
$ pipenv --rm

运行 pip 命令

1
$ pipenv run pip freeze

导出到 requirements.txt

1
$ pipenv lock -r > requirements.txt

其他命令

1
2
3
$ pipenv --where  # Project 位置
$ pipenv --venv # 虚拟环境位置
$ pipenv --py # Python 解释器位置

替换 pypi 源来提高包的安装速度

1
2
$ cd myProject
$ vi Pipfile # 创建虚拟环境后当前文件夹下有个 Pipfile 文件

将源改为清华

1
2
3
4
[[source]]
# ...
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
# ...

其他可设置项

  • 自定义虚拟环境保存的文件夹

    1
    $ echo "WORKON_HOME=$HOME/.virtualenvs" >> ~/.zshrc  # 此为默认位置
  • 使用 autoenv 在进入 Project 时自动启动虚拟环境

    1
    2
    3
    4
    $ pip install autoenv
    $ echo "source which activate.sh" >> ~/.zshrc
    $ cd myProject
    $ echo "pipenv shell" > .env # 在进入文件夹时, autoenv 会自动执行 .env 中的代码