Mac中pyenv的安装与使用教程

目录
  • 前言
  • 一、pyenv
    • 1、安装
      • 方式一:Git Clone
      • 方式二:Homebrew
    • 2、验证
    • 3、使用
  • 二、virtualenv插件
    • 1、安装
      • 方式一:Git Clone
      • 方式二:Homebrew
    • 2、配置
    • 3、使用
    • 自动激活和退出虚拟环境
  • 三、报错
    • 1、激活指定的虚拟环境时报错
    • 2、还是系统版本
    • 3、安装 python报错
  • 四、注意
  • 五、相关知识
    • 5.1、pyenv能做什么
    • 5.2、pyenv运行
    • 5.3、PATH
    • 5.4、shims
  • 总结

前言

pyenv 可在不同 python 版本之间轻松切换,实现 python 环境隔离,且支持自动激活和退出虚拟环境

一、pyenv

1、安装

方式一:Git Clone

git clone git://github.com/pyenv/pyenv.git ~/.pyenv

bash

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/shims:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
exec $SHELL -l

zsh

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/shims:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
exec $SHELL -l

方式二:Homebrew

安装

brew install pyenv

根据自身环境,将下方内容加到对应文件中: .bashrc / .zshrc

export PYENV_ROOT=/usr/local/var/pyenv
export PATH="$PYENV_ROOT/bin:$PATH"
export PATH="$PYENV_ROOT/shims:$PATH"
if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi

2、验证

验证安装是否成功:

pyenv

3、使用

基本使用

命令 描述
pyenv --version 查看 pyenv 的版本
pyenv versions 罗列当前已安装的所有 python 环境,如果是当前正在使用的环境,则前面会有个 *
pyenv help 查看帮助
pyenv init 如果输入 pyenv 之后使用 tab 不补全,可以使用该命令进行初始即可使用补全命令

安装环境

命令 描述
pyenv install -l 显示可以安装的版本列表
pyenv install 版本号 安装指定版本的 python
pyenv rehash 更新本地数据库,安装指定版本的 python 后使用

环境应用

命令 描述
pyenv global 版本号 更改本机版本,重启不会造成再次更改
pyenv local 版本号 会在当前目录创建 .python-version 文件,并记录设置的 python 环境,每次进入该目录会自动设置成该 python 环境
pyenv shell 版本号 更改当前 shell 下使用的 python 版本,临时生效,优先级高于 global

二、virtualenv插件

1、安装

方式一:Git Clone

cd .pyenv/plugins
git clone https://github.com/pyenv/pyenv-virtualenv.git # 安装virtualenv插件

方式二:Homebrew

brew install pyenv-virtualenv

2、配置

无论使用上述的哪种方式进行的安装,请根据自身环境,将下方内容加到对应文件中: .bashrc / .zshrc

eval "$(pyenv virtualenv-init -)"

3、使用

基本使用

命令 描述
pyenv virtualenv 3.8.3 env383 创建 3.8.3 版本虚拟环境
pyenv virtualenvs 显示环境
pyenv activate env383 激活使用指定的虚拟环境
pyenv deactivate 退出当前虚拟环境
rm -rf .pyenv/versions/3.8.3 删除版本环境
rm -rf .pyenv/versions/env383 删除虚拟环境

自动激活和退出虚拟环境

在需要使用虚拟环境的目录(通常是项目目录)中:

  • 建立一个 .python-version 的文本文件
  • 将虚拟环境名称(如 env383 )写在里面

之后每次进/出该目录时,虚拟环境都将自动激活/退出。

三、报错

1、激活指定的虚拟环境时报错

# 命令
pyenv activate env383

# 报错信息
Failed to activate virtualenv.

Perhaps pyenv-virtualenv has not been loaded into your shell properly.
Please restart current shell and try again.

别慌,重启你的终端,或者执行如下命令即可

exec $SHELL -l

2、还是系统版本

如果你用 pyenv versions 查看,明明已经切换成功,但是用 python -V却还是系统版本。

原因是 pyenv没有加到 $PATH环境变量里去,解决办法如下:

export PYENV_ROOT=~/.pyenv
export PATH=$PYENV_ROOT/shims:$PATH

3、安装 python报错

安装 python报错,如

pyenv install 3.8.3

报错内容:

python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
Downloading Python-3.8.3.tar.xz...
-> https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tar.xz
Installing Python-3.8.3...
python-build: use readline from homebrew
python-build: use zlib from xcode sdk

BUILD FAILED (OS X 12.0.1 using python-build 20180424)

Inspect or clean up the working tree at /var/folders/cy/8zkx5hys2tsgb1d_x42_r8qc0000gn/T/python-build.20220122174148.1531
Results logged to /var/folders/cy/8zkx5hys2tsgb1d_x42_r8qc0000gn/T/python-build.20220122174148.1531.log

Last 10 log lines:
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include   -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include   -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration  -I./Include/internal  -I. -I./Include -I/usr/local/opt/readline/include -I/usr/local/opt/readline/include -I/usr/local/var/pyenv/versions/3.8.3/include -I/usr/local/opt/sqlite/include -I/usr/local/opt/readline/include -I/usr/local/opt/readline/include -I/usr/local/var/pyenv/versions/3.8.3/include -I/usr/local/opt/sqlite/include  -DPy_BUILD_CORE_BUILTIN  -c ./Modules/_codecsmodule.c -o Modules/_codecsmodule.o
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include   -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include   -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration  -I./Include/internal  -I. -I./Include -I/usr/local/opt/readline/include -I/usr/local/opt/readline/include -I/usr/local/var/pyenv/versions/3.8.3/include -I/usr/local/opt/sqlite/include -I/usr/local/opt/readline/include -I/usr/local/opt/readline/include -I/usr/local/var/pyenv/versions/3.8.3/include -I/usr/local/opt/sqlite/include  -DPy_BUILD_CORE_BUILTIN  -c ./Modules/_weakref.c -o Modules/_weakref.o
./Modules/posixmodule.c:9221:15: error: implicit declaration of function 'sendfile' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
        ret = sendfile(in, out, offset, &sbytes, &sf, flags);
              ^
clang -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include   -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include   -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration  -I./Include/internal  -I. -I./Include -I/usr/local/opt/readline/include -I/usr/local/opt/readline/include -I/usr/local/var/pyenv/versions/3.8.3/include -I/usr/local/opt/sqlite/include -I/usr/local/opt/readline/include -I/usr/local/opt/readline/include -I/usr/local/var/pyenv/versions/3.8.3/include -I/usr/local/opt/sqlite/include  -DPy_BUILD_CORE_BUILTIN  -DPy_BUILD_CORE_BUILTIN -I./Include/internal -c ./Modules/_functoolsmodule.c -o Modules/_functoolsmodule.o
1 error generated.
make: *** [Modules/posixmodule.o] Error 1
make: *** Waiting for unfinished jobs....
1 warning generated.

使用下面的命令安装即可,注意修改成相应的版本号

CFLAGS="-I$(brew --prefix openssl)/include -I$(brew --prefix bzip2)/include -I$(brew --prefix readline)/include -I$(xcrun --show-sdk-path)/usr/include" LDFLAGS="-L$(brew --prefix openssl)/lib -L$(brew --prefix readline)/lib -L$(brew --prefix zlib)/lib -L$(brew --prefix bzip2)/lib" pyenv install --patch 3.8.3 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)

四、注意

  • 安装好的版本不做任何修改,我们只操作虚拟环境,如 env383
  • 可以通过版本来多个虚拟环境,如 env383_1、env383_2
  • 导出当前环境的依赖库: pip freeze > requirements.txt
  • 导入依赖库到当前环境: pip install -r requirements.txt

五、相关知识

5.1、pyenv能做什么

1,基于每个用户更改全局Python版本

2,对每个项目的Python版本提供支持

3,允许通过环境变量覆盖Python版本

4,一次搜索多个版本的Python

5.2、pyenv运行

在一个高的级别上,pyenv使用shim可执行文件注入到PATH来拦截Python命令;确定您的应用程序指定了哪个Python版本,并将命令传递给正确的已安装Python版本。

5.3、PATH

当运行诸如python或pip等命令时,操作系统将在目录列表中搜索以查找具有该名称的可执行文件。此目录列表位于一个名为PATH的环境变量中,列表中的每个目录都用冒号分隔:

/usr/local/bin:/usr/bin:/bin

PATH从左到右搜索目录,因此列表开头目录中的匹配可执行文件优先于结尾目录中的另一个可执行文件。在这个例子中, /usr/local/bin目录将被搜索的第一个,然后是/usr/bin,然后是/bin。

5.4、shims

pyenv通过在你的PATH前插入shims目录来工作:

$(pyenv root)/shims:/usr/local/bin:/usr/bin:/bin

Shim是轻量级的可执行文件,它们只是将命令传递给pyenv。因此在安装了pyenv的情况下,运行pip时操作系统将执行以下操作:

1,在PATH中搜索名称为pip的可执行文件

2,在PATH开头的shims目录中,找到名称为pip的shim文件

3,运行名称为pip的shime文件,shime将命令传递给pyenv

总结

到此这篇关于Mac中pyenv的安装与使用的文章就介绍到这了,更多相关Mac pyenv安装使用内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Ubuntu 18.04安装 pyenv、pyenv-virtualenv、virtualenv、Numpy、SciPy、Pillow、Matplotlib

    1.目前Python版本管理工具有很多,pyenv是比较好用的一款,安装如下: 输入: git clone https://github.com/pyenv/pyenv.git ~/.pyenv echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc echo -e 'if comm

  • Deepin下安装神器Pyenv的步骤记录

    前言 以前一直是通过修改/bin/目录下的软连接来实现python版本的切换的,十分不方便,而且安装新的python版本也十分繁琐,尝试了一把pyenv,瞬间感觉真香,记录下安装过程备忘. 安装 安装依赖库 这一步必须,否则python编译会报警告或异常,导致某些扩展无法使用,例如: WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib? WARNING: The Python readline ext

  • pyenv与virtualenv安装实现python多版本多项目管理

    踩了很多坑,记录一下这次试验,本次测试环境:Linux centos7 64位. pyenv是一个python版本管理工具,它能够进行全局的python版本切换,也可以为单个项目提供对应的python版本,使用pyenv以后,可以在服务器上安装多个不同的python版本,版本切换方便,能够更好的满足我们的需求. virtualenv是一个管理不同项目的工具,用以隔离不同项目的工作环境,在同一个python版本实现不同的环境需求. pyenv与virtualenv配合使用,可以更好的管理我们在Li

  • Linux下安装pyenv的方法

    前置条件 需安装git 安装步骤 1. 从远程仓库中克隆 pyenv 使用下面的命令克隆pyenv: git clone https://github.com/yyuu/pyenv.git ~/.pyenv 2. 配置环境变量 依次使用下面三个命令来配置环境变量: echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile echo 'export PATH="$PYENV_ROOT/bin:$PATH&q

  • Mac中pyenv的安装与使用教程

    目录 前言 一.pyenv 1.安装 方式一:Git Clone 方式二:Homebrew 2.验证 3.使用 二.virtualenv插件 1.安装 方式一:Git Clone 方式二:Homebrew 2.配置 3.使用 自动激活和退出虚拟环境 三.报错 1.激活指定的虚拟环境时报错 2.还是系统版本 3.安装 python报错 四.注意 五.相关知识 5.1.pyenv能做什么 5.2.pyenv运行 5.3.PATH 5.4.shims 总结 前言 pyenv 可在不同 python 版

  • Mac下Anaconda的安装和使用教程

    前提 在刚接触python的时候我想大多数人都会面临一个问题,我到底是选择2还是3,因为现在网上好多的资料和视频项目中都还是用的2,我们跟着学习的时候肯定也是首先从2开始学的,但是我们心里肯定也担心学2会不会跟不上技术的发展,毕竟3才是最新的,而且将来的项目势必也都会逐渐去支持最新的3,这个时候我们就有了既需要一个2的环境来学习以前的一些项目来入门,也需要3的环境来跟上最新的技术,就需要一个强大的python环境管理工具了,可以在电脑上同时搭建两套环境,并且可以在两个环境之间来回切换而不受对方的

  • python中pip的安装与使用教程

    在安装pip前,请确认win系统中已经安装好了python,和easy_install工具,如果系统安装成功,easy_install在目录python的安装盘(如C盘):\Python27\Scripts下面 2.采用cd命令进入到Scripts 目录下面:G:\Python27\Scripts 3.输入命令: easy_install pip,开始安装pip 4. pip安装成功后,在cmd下执行pip,将会有如下提示. 5. pip 是一个安装和管理 Python包的工具,下载相关pyth

  • redis在Windows中下载及安装、设置教程

    一.下载: 下载地址:https://github.com/MicrosoftArchive/redis/releases 根据系统下载的版本:以(64位为例) 下载后一般解压到根目录下:如(E:\Redis-x64-3.2.100) 二.安装: 打开cmd命令窗口,使用命令进行安装和注册redis到window服务 安装命令:redis-server.exe --service-install redis.windows.conf --loglevel verbose 启动服务命令:redis

  • Python 中的pygame安装与配置教程详解

    安装软件环境及版本说明 OS: Win10 x 64 专业版 Python: 2.7 IDE: PyCharm Community 2018 1. 安装python 1)下载并安装python python官网下载需要的版本,并安装(安装过程很简单,步骤略) https://www.python.org/downloads/windows/ 这里下载的是python2.7 2)配置环境变量 如果安装python时,没有勾选添加python到环境变量PATH,则需要手动添加 3)验证是否安装+配置

  • vue2中less的安装以及使用教程

    目录 1.安装 1.1 在vue cli2 使用vue init webpack xxx 创建的项目 1.2 在vue cli3中(vue create xxx) 2.使用 2.1定义变量 2.2 在属性中使用变量 2.3混合(Mixin) 总结 1.安装 1.1 在vue cli2 使用vue init webpack xxx 创建的项目 webpack安装要考虑less-loader的兼容问题, npm install less-loader@7.0.0 如果7.0.0不行,就一步一步下探,

  • Mac系统Navicat的安装与使用教程

    小编的系统是MacOS Catalina10.15.4.Navicat Premium Mac 12.0.22 小编在刚用MBP的时候,想要连接数据库,发现找不到相应软件,且Apple Store很多软件需要付费,Nacicat也不例外,小编看到付费就脑壳疼,因为穷呀,哈哈哈,就网上各种找方法尝试,功夫不负有心人,现在已经愉快的上手了.废话不多说,上方法!! 一.安装 Navicat Premium Mac 12.0.22下载地址 中文版: 链接: https://pan.baidu.com/s

  • Mac中mongoDB的安装与卸载步骤详解

    前言 MongoDB 是一个基于分布式文件存储的数据库,旨在为 web 应用提供可扩展的高性能数据存储解决方案.本文主要介绍的是关于在mac中安装卸载mongoDB数据库的方法,更多关于mongoDB的使用大家可以参考这篇文章:http://www.jb51.net/article/79416.htm (一) mongodb 安装 mongodb 数据库的安装有两种方法. 一种是使用命令行安装,第二种是使用HomeBrew 安装,我按照第二种方式安装. 1.更新Homebrew的package数

  • windows server 2008 R2中IIS FTP安装部署图文教程

    windows server 2008 R2中IIS FTP安装部署教程,供大家参考,具体内容如下 1.登陆系统,进入开始——>管理工具——>服务器管理 2.选中“角色”——>“ 添加角色” 3.在“添加角色向导”中操作 注:在这里会等待1到5分钟不等. 添加角色完毕. 4. 进入IIS界面 1) 服务器管理器——>角色——>web服务器(IIS)——>Internet 信息服务(IIS),点击进入 2) 开始——>管理工具——>Internet 信息服务(

  • Python3.6 中的pyinstaller安装和使用教程

    一.安装pyinstaller 先安装anacode,再去安装python.会有很多自带的lib库,可以省去很多麻烦. 1.用国外库安装 pip install pyinstalller 由于国外网络的限制,经常会报以下错误: ERROR: Could not find a version that satisfies the requirement pyinstalller (from versions: none) ERROR: No matching distribution found

随机推荐