我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Mac中pyenv的安装与使用教程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Mac中pyenv的安装与使用教程

前言

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安装使用内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Mac中pyenv的安装与使用教程

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

pyenv安装与使用-多版本python

说明:由于centos或者RHEL操作系统自带的python一般都比较低,centos6 自带的python版本都是2.6.6,但是现在一般python使用的版本都是2.7版本,以前总在操作上源码升级python,但是这样会导致的yum等利
2023-01-31

PyCharm 安装与使用配置教程(windows,mac通用)

pycharm是一款功能强大的python编辑器,具有跨平台性,鉴于目前最新版pycharm使用教程较少,为了节约大家摸索此IDE的时间,来介绍一下pycharm在windows下是如何安装的。MAC下安装也是一路NEXT就好 一、PyCh
2022-06-02

Deepin中安装与使用virtualenv的教程

virtualenv是一个用来创建隔离的python虚拟环境的工具。它可以在一个独立的目录创建自己的python环境,使用virtualenv运行的程序,并不会访问全局的python环境,也不会访问
2022-06-04

Mac安装jdk的教程

以下是在Mac上安装JDK的步骤: 打开浏览器,访问官方JDK下载页面:https://www.oracle.com/java/technologies/javase-downloads.html 在页面中选择适合您操作系统的JDK版本
2023-08-21

TypeScript安装与使用的详细教程

TypeScript是JavaScript的超集,扩展了JavaScript的语法,因此现有的JavaScript代码可与TypeScript一起工作无需任何修改,TypeScript通过类型注解提供编译时的静态类型检查,下面这篇文章主要给大家介绍了关于TypeScript安装与使用的详细教程,需要的朋友可以参考下
2023-01-10

【软件安装教程】navicat的安装与简单使用

1、官网https://www.navicat.com.cn/ 2、安装教程(厚着脸皮,贴上大佬教程)Navicat15安装教程:https://www.cnblogs.com/xuexianqi/p/12797170.html
【软件安装教程】navicat的安装与简单使用
2021-12-10

Linux中htop的安装与其命令的使用教程

这篇文章主要讲解了“Linux中htop的安装与其命令的使用教程”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux中htop的安装与其命令的使用教程”吧!1. htop简介Htop是一
2023-06-12

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录