介绍
无论你刚刚开始,还是你是一个经验丰富的Python开发人员,你可能已经发现管理你的Python环境是无聊的和痛苦的。
在本教程中,您将安装 pyenv来管理 Python 环境,安装 direnv来自动配置和为项目提供 virtualenv,为项目设置全球 Python 版本和本地 Python 版本,并在进入项目目录时配置 virtualenv 和自动源 venv。
前提条件
我们将通过homebrew安装pyenv
和direnv
,以便简化安装过程。
与Pyenv合作
首先,你会看到如何使用pyenv。
安装PYENV
要开始,我们将安装pyenv
与homebrew,并将所需的pyenv
init添加到我们的~/.bashrc
文件中。
1brew install pyenv
2echo 'eval "$(pyenv init -)"' >> ~/.bashrc # initialize pyenv on new shells
3source ~/.bashrc # reinitialize bashrc to reflect changes in your current shell
一旦安装,花一会儿检查我们的环境是什么样子. 在新鲜的系统中,你会看到类似的东西:
1which pyenv
1[secondary_label Output]
2/usr/local/bin/pyenv
1pyenv versions
1[secondary_label Output]
2* system
1which pip
1[secondary_label Output]
2/usr/local/bin/pip
1which python
1[secondary_label Output]
2/usr/local/bin/python
當你執行「python 版本」時,你會注意到「* 系統」,正如引用所暗示的那樣,這是你的系統的 python 版本。星座表示目前的 python 二進制來源於你的「${PATH}」。 一個很好的規則是只留下系統的二進制。 如果你想看到「pyenv」可以為你安裝的 python 版本的列表,請使用「pyenv install --list」。
1pyenv install 2.7.15
2pyenv install 3.7.0
3pyenv versions
1[secondary_label Output]
2* system (set by /Users/iamjohnnym/.pyenv/version)
3 2.7.15
4 3.7.0
配置基本要求
现在,让我们升级pip
,因为很可能,它安装了一个较旧的版本. 下面的命令将循环通过安装的版本,并更新pip
到最新的。
1for VERSION in $(pyenv versions --bare) ; do
2 pyenv shell ${VERSION} ;
3 pip install --upgrade pip ;
4done
为了实现我们想要的工作流程,我们希望为我们的Python 2.x
版本安装py2venv
,这样我们就可以模仿python 3.x
如何安装virtualenvs。
1for VERSION in $(pyenv versions --bare | egrep '^2.') ; do
2 pyenv shell ${VERSION} ;
3 pip install py2venv ;
4done
设置全球Python版本
即使我们安装了pyenv
,它仍然会默认为系统
。 为了改变这一点,将python 3.7.0
设置为我们的全球版本:
1pyenv global 3.7.0
2pyenv versions
1[secondary_label Output]
2 system
3 2.7.15
4* 3.7.0 (set by /Users/iamjohnnym/.pyenv/version)
1which python
1[secondary_label Output]
2/Users/iamjohnnym/.pyenv/shims/python
我们有pyenv
的设置和功能,让我们继续到direnv
。
与 direnv 合作
direnv
是一个方便的实用程序,允许您创建一个文件,放置在任何目录中,您想要的功能如.bashrc
。 每次你输入目录与此文件,你的壳会自动执行它。 功能是无限的,但为此帖子的目的,我们将使用它来配置一个Python virtualenv基于文件.python-version
,然后为我们激活它。 目的是创建一个无缝的开发流程. 无需担心手动配置或激活virtualenvs;让您的计算机为您工作。
安装预防
安装是简单的与homebrew:
1brew install direnv
direnv
现在已经安装,并准备好进行开发,让我们试试一个样本项目。
创建一个新项目
我们将创建一个新目录,设置本地Python版本,设置我们的.envrc
文件,并激活它。
1mkdir -p ~/python-projects/pyenv-tutorial
2cd $_ # if you're unaware, $_ will execute the last argument of your command
3pwd
1[secondary_label Output]
2/Users/iamjohnnym/ python-projects/pyenv-tutorial
1pyenv local 3.7.0
2cat .python-version
1[secondary_label Output]
23.7.0
配置环境文件
此时,我们已经准备好创建我们的.dll 文件. 使用您最喜欢的编辑器,创建该文件并添加以下内容:
1# check if python version is set in current dir
2if [ -f ".python-version" ] ; then
3 if [ ! -d ".venv" ] ; then
4 echo "Installing virtualenv for $(python -V)"
5 # if we didn't install `py2venv` for python 2.x, we would need to use
6 # `virtualenv`, which you would have to install separately.
7 python -m venv .venv
8 fi
9 echo "Activating $(python -V) virtualenv"
10 source .venv/bin/activate
11fi
12# announce python version and show the path of the current python in ${PATH}
13echo "Virtualenv has been activated for $(python -V)"
14echo "$(which python)"
如果您通过壳编辑器进行此操作,例如‘vim’。您将看到以下消息,‘direnv:.envrc 错误被阻止. Run direnv 允许批准其内容’. 不要担心,因为这是一个安全功能,以防止该文件自动执行。 每当该文件被更改时,它需要手动批准才能再次自动执行。 要激活它,只需从项目 dir 键入‘direnv allow’。
1direnv allow
1[secondary_label Output]
2direnv: loading .envrc
3Installing virtualenv for Python 3.7.0
4Activating Python 3.7.0 virtualenv
5Virtualenv has been activated for Python 3.7.0
6/Users/iamjohnnym/.personal/tutorials/pyenv-direnv/.venv/bin/python
7direnv: export +VIRTUAL_ENV ~PATH
结论
您现在拥有管理不同 python 版本和项目依赖的工具!