仍未知那天的pyenv为什么崩掉

2024-03-26 00:44
文章标签 未知 崩掉 pyenv 那天

本文主要是介绍仍未知那天的pyenv为什么崩掉,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介

pyenv通过在PATH头部插入shims路径来实现对python版本的控制,结合了pip和virtualenv的功能,使用思路是先创建一个指定python版本的环境,然后在这个环境上安装相应的包。

本机环境

本机使用的是.zshrc
此时内容如下:

shanshan@EVYSHAN-MC0 ~ % cat ~/.zshrcexport PATH="/usr/local/opt/mysql@5.7/bin:$PATH"
export PATH="/Library/Developer/CommandLineTools/usr/bin:$PATH"
export PYENV_ROOT=/usr/local/bin/pyenv
export PATH="$PYENV_ROOT/bin:$PATH"
export PATH="$PYENV_ROOT/shims:$PATH"
if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
export PATH="/usr/local/opt/mysql@8.0/bin:$PATH
export NVM_DIR="$HOME/.nvm"
[ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh"  # This loads nvm
[ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt/nvm/etc/bash_completion.d/nvm"  # This loads nvm bash_completion"

依次解释如下:

  1. export PATH="/usr/local/opt/mysql@5.7/bin:$PATH"

    • 这行命令将 MySQL 5.7 的 bin 目录添加到环境变量 PATH 中,这样你就可以在任何地方运行 MySQL 命令。
  2. export PATH="/Library/Developer/CommandLineTools/usr/bin:$PATH"

    • 这行命令将 macOS 命令行开发工具的 bin 目录添加到 PATH,使得这些工具可以在终端中直接使用。
  3. export PYENV_ROOT=/usr/local/bin/pyenv

    • 设置 PYENV_ROOT 环境变量为 /usr/local/bin/pyenv,这是 pyenv 的安装目录。
  4. export PATH="$PYENV_ROOT/bin:$PATH"

    • 将 pyenv 的 bin 目录添加到 PATH,允许你在终端中直接运行 pyenv 命令。
  5. export PATH="$PYENV_ROOT/shims:$PATH"

    • 将 pyenv 的 shims 目录添加到 PATH。shims 是 pyenv 用来拦截 Python 命令并确保使用正确版本的 Python 的一种机制。
  6. if which pyenv > /dev/null; then eval "$(pyenv init -)"; fi

    • 这行命令检查 pyenv 命令是否存在。如果存在,它将执行 pyenv init - 命令,这是 pyenv 的初始化脚本,用于配置当前 shell 会话。
  7. eval "$(pyenv init -)"

    • 再次执行 pyenv init -,这可能是重复的,除非有特殊的原因需要两次初始化。
  8. eval "$(pyenv virtualenv-init -)"

    • 执行 pyenv virtualenv-init -,这是 pyenv 插件 pyenv-virtualenv 的初始化脚本,用于支持虚拟环境的创建和管理。
  9. export PATH="/usr/local/opt/mysql@8.0/bin:$PATH"

    • 将 MySQL 8.0 的 bin 目录添加到 PATH。注意这行命令似乎缺少一个结束的双引号,这可能是一个错误。
  10. export NVM_DIR="$HOME/.nvm"

    • 设置 NVM_DIR 环境变量为你的主目录下的 .nvm 目录,这是 Node Version Manager (nvm) 的配置目录。
  11. [ -s "/usr/local/opt/nvm/nvm.sh" ] && . "/usr/local/opt/nvm/nvm.sh"

    • 检查 nvm.sh 脚本是否存在并且文件大小不为零,如果是,就执行这个脚本。这个脚本初始化 nvm。
  12. [ -s "/usr/local/opt/nvm/etc/bash_completion.d/nvm" ] && . "/usr/local/opt/nvm/etc/bash_completion.d/nvm"

    • 检查 nvm 的 bash 自动补全脚本是否存在并且文件大小不为零,如果是,就执行这个脚本。这个脚本提供了 nvm 命令的自动补全功能。

可以发现,第9行的命令是不完整的,因为它缺少一个双引号,修正后是

export PATH="/usr/local/opt/mysql@8.0/bin:$PATH"

而且eval "$(pyenv init -)"出现了两次,需要删掉最后一次

出现问题

pyenv install -v x.x.x版本,说BUILD FAILED ,configure: error: in `/var/folders/4t/q8vsd83j12v34_1z9lv5_z040000gn/T/python-build.20240325204149.46990/Python-3.6.1’:

configure: error: C compiler cannot create executables
![[Pasted image 20240325204225.png]]

说C编译器无法创建可执行文件,错误信息建议查看config.log。
于是执行命令

cat config.log | grep error

![[Pasted image 20240325204624.png]]

报错说No such file or directory

猜想是,config.log 文件是在编译过程中生成的,这个编译目录是一个临时目录,可能在编译失败后被立即清理了。

于是一个终端重新运行安装python3.6.1的命令,
另一个终端cd到这个临时目录,然后再次执行cat命令,显示信息如下:
![[Pasted image 20240325204915.png]]
错误信息表明 编译器或链接器问题:错误信息中提到了 linker command failed with exit code 1,这可能意味着链接器(ld)遇到了问题。检查是否有必要的库文件和链接器脚本。

clang: error: argument to ‘-V’ is missing (expected 1 value)

曾经尝试的解决方案:

重新安装xcode

sudo rm -rf /Library/Developer/Command Line Toolsxcode-select --install

這個問題主要是輸在 CLT 不支援 OS X 11 的關係,所以要更新一下,只需要在終端機輸入以下指令(很久要耐心等):

softwareupdate --all --install --force

一个超复杂的安装指令

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.6.0 < <(curl -sSL https://github.com/python/cpython/commit/8ea6353.patch\?full_index\=1)

还有一个差不多复杂的安装指令

CFLAGS="-I$(brew --prefix readline)/include -I$(brew --prefix openssl)/include 
-I$(xcrun --show-sdk-path)/usr/include" \
LDFLAGS="-L$(brew --prefix readline)/lib -L$(brew --prefix openssl)/lib" \
PYTHON_CONFIGURE_OPTS=--enable-unicode=ucs2 \
pyenv install -v 3.7.1

还有如下:
![[Pasted image 20240325211826.png]]

都不行……

这篇关于仍未知那天的pyenv为什么崩掉的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/846798

相关文章

利用pipenv和pyenv管理多个相互独立的Python虚拟开发环境

我们经常会遇到这样的开发需求,比如你手头有多个开发项目,其中项目A要求用python3.7,项目B需要用python3.6,有要求项目A和项目B依赖包相互独立,互不干扰。为了满足这样的开发需求,我们需要在自己的电脑上安装多个Python版本,并且项目之间进行环境隔离。要想安装多个Python版本,可以利用pyenv这个好用的工具,对于建立多个项目之间隔离的开发环境,可以借助于pipenv这个更加

python利器——pipenv和pyenv介绍

文章目录 一、pyenv二、pipenv三、virtualenv四、线上部署参考资料 在写python程序时,经常会被版本管理以及第三方包管理搞的很头疼。这两天看了业内相关的解决方案,觉的很不错。 一、pyenv 我们经常在开发时会需要用到多个python版本,为了解决版本问题,比较常见的做法是修改环境变量来切换版本,但是修改环境变量终究比较麻烦。另外,我们在安装新的pyt

Pyenv安装步骤及错误解决方案

Pyenv安装步骤及错误解决方案 1.一键安装(需要科学上网) curl https://pyenv.run | bash或者curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash 2.环境变量设置 通过在终端运行以下命令添加到~/.bashrc中 echo 'ex

【路径规划】移动机器人在未知环境下目标的路径规划算法

摘要 本文介绍了一种新型路径规划算法,专用于在包含多个障碍物的环境中为机器人找到最优路径。该算法通过分析障碍物位置和目标点位置,生成一个引导机器人避开障碍物并到达目标的路径。项目展示了路径规划在机器人导航中的重要性,并通过实验验证了算法的有效性。 理论 路径规划是机器人导航的核心技术,旨在寻找从起点到目标点的最优路径,避开环境中的障碍物。本文提出的算法通过以下步骤实现路径规划: 1.

Ubuntu12下未知驱动器处理

一、背景 在挂载大硬盘(Ubuntu12下挂载硬盘(9TB))的过程出现了错误导致下图的错误:Ubuntu下使用pvdisplay命令发现有未知驱动器的信息:Couldn’t find device with uuid ‘xxxxxxxxxxxxx’,如下图所示: (图1:unknown device) 如果出现上面的错误,是没有办法按照Ubuntu12下挂载硬盘(9TB)的步骤进行

反事实推理(Counterfactual Reasoning):探索未知与决策的桥梁

反事实推理(Counterfactual Reasoning):探索未知与决策的桥梁 反事实推理(Counterfactual Reasoning)是一种思维方式,它试图回答“如果……会怎样?”的问题。简单来说,反事实推理是在已有事实的基础上,通过假设条件发生改变,来推测可能的结果。我们可以通过这个过程更好地理解因果关系,并帮助我们在未来做出更好的决策。 1. 反事实推理的基本原理 反事

从CSS注入到渗透未知网页

简介 ​ 这篇文章中,分享一个技巧。通过CSS注入盲打用户前端页面敏感数据 ​ 需要的前提: 存在CSS注入漏洞的环境 ​ 理论最高危害:1 click用户接管 环境记录 采取docker-compose 部署 部署nginx-docker mkdir nginx_testcd nginx_testtouch docker-compose.ymlmkdir -p nginx/c

23K进腾讯那天,我还是止不住哭了.....

悲催的经历: 先说一下自己的个人情况,计算机专业,17 年本科毕业,一毕业就进入了“阿里”测试 岗(进去才知道是接了个阿里外包项目,可是刚毕业谁知道什么外包不外包的)。 更悲催的是:刚入职因为家里出现一些变故,没有精力和金钱去承担待业的成本,也就意味着不能失业,只能默默的扛起担子,累点苦点也无所谓了,结果一待就待了差不多 3 年的时间。 可惜的是(或许是庆幸)因为去年受到了疫情的影响,公司开始

概率统计Python计算:一元线性回归未知参数的区间估计

在博文《一元线性回归未知参数的点估计》中利用scipy.stats的linregress函数,计算了总体分布 N ( a x + b , σ 2 ) N(ax+b, \sigma^2) N(ax+b,σ2)的未知参数 a a a, b b b和 σ 2 \sigma^2 σ2的无偏估计 a ∧ \stackrel{\wedge}{a} a∧, b ∧ \stackrel{\wedge}{b} b

概率统计Python计算:一元线性回归未知参数的点估计

设试验结果可表为随机变量 Y Y Y,影响试验结果 Y Y Y的因素是可控的且表为普通变量 x x x,若 Y Y Y~ N ( a x + b , σ 2 ) N(ax+b,\sigma^2) N(ax+b,σ2),其中 a , b a,b a,b即 σ 2 \sigma^2 σ2均为未知参数。对 x x x的一系列取值 ( x 1 , x 2 , ⋯ , x n ) (x_1,x_2,\cd