mac安裝pyenv和遇到的奇怪問題


pyenv是做什么的

pyenv是用來更方便的管理/切換python版本的.
github上通過homebrew安裝介紹的非常簡單.主要是對相關知識點不熟悉造成很多問題.
首先必須明白的是:

通過homebrew安裝:

brew install pyenv

如果報錯brew命令沒找到,說明需要安裝homebrew, 參考新Mac安裝python3和虛擬環境第 2-4 節完成安裝 homebrew 的安裝。

非Mac普通Linux使用以下命令安裝pyenv

curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
或者
git clone https://github.com/yyuu/pyenv.git ~/.pyenv

參考:Linux安裝pyenv(python多版本)教程

查看是否安裝成功

pyenv -v
如果正常打印了版本號說明安裝成功pyenv 1.2.6

配置環境變量

查看當前shell是zsh還是bash, 如果是bash選擇下面的方式一,如果是zsh選擇方式二

 dscl . -read /Users/$USER UserShell

方式1 編輯.bash_profile文件

終端執行命令:

echo 'export PYENV_ROOT="$HOME/.pyenv"' >>~/.bash_profile

echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >>~/.bash_profile

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

方式2 編輯~/.zshrc 文件,

終端執行命令:

echo 'export PYENV_ROOT="$HOME/.pyenv"' >>~/.zshrc

echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >>~/.zshrc

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

生效環境變量

如果是bash

source  ~/.bash_profile

如果是zsh

source  ~/.zshrc

異常情況:如果碰到下面這個問題

WARNING: `pyenv init -` no longer sets PATH.
Run `pyenv init` to see the necessary changes to make to your configuration.

 解決方案是對剛才所設置的環境變量一點小改動。打開剛才的環境變量文件 .zshrc 或者 .bash_profile

"vim ~/.bash_profile"或者"vim ~/.zshrc"

應該可以看到下面這段內容

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if command -v pyenv 1>/dev/null 2>&1; then
  eval "$(pyenv init -)"  # 這行需要改動
fi

改成下面這樣

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if command -v pyenv 1>/dev/null 2>&1; then
  eval "$(pyenv init --path)"
fi

參考:https://github.com/pyenv/pyenv/issues/1906

查看所有的python版本(pyenv管理的所有版本)

$ pyenv versions
* system (set by /Users/xxx/.pyenv/version)

* 表示當前正在使用的版本,system表示用的是系統python版本

查看可安裝python版本

$ pyenv install --list
Available versions:
  2.1.3
  2.2.3
  2.3.7
  ...

選擇版本進行安裝

$ pyenv install 3.7.3

查看所有安裝的版本

$ pyenv versions
* system (set by /Users/xxx/.pyenv/version)
  3.7.3

可以看到多了一個3.7.3版,*表示當前使用的版本

切換版本

$ pyenv global 3.5.5 # 全局切換
$ python -V # 驗證一下是否切換成功
  system
* 3.7.3 (set by /Users/admin/.pyenv/version)

*表示當前使用的版本

注意,此處需要重啟終端對應版本才會正式生效

此處用也可用local,只對當前目錄生效

$ pyenv local 3.5.5 # 當前目錄及其目錄切換
$ python -V # 驗證一下是否切換成功

同樣此處需要重啟終端對應版本才會正式生效

有時設置了pyenv local版本后,再設置global會發現沒有生效,可以嘗試:

pyenv local --unset

解除local設置。

要切換回系統版本,用同樣命令:

$ pyevn global system

卸載python版本

$ pyenv uninstall 3.7.3

pyenv 命令列表

奇怪的問題

安裝完成后,使用python運行程序是可能會碰到下面這個問題,圖片來源:pycharm destroy _stat destroy os cleanup[3] wiping _warning wiping _codecs,問題就是運行python程序的時候不停的輸出destroy和clean信息。

 這個問題的原因可能是下面兩種,

1、python命令和pytest命令用混了,比如本來應該使用pytest -sv test_aaa.py但是輸入命令的時候卻使用了python -sv test_aaa.py, 這個時候會報上面這個錯誤。

2、在未知是否安裝python的情況下,重新安裝了python,解決辦法是卸載當前系統中已有的所有python3和pyenv, 隨后重新安裝pyenv, 並使用pyenv安裝python3

卸載python3的方式:

網上很多卸載方式是這樣的

對於 Mac 自帶的 Python,其框架目錄為:

System/Library/Frameworks/Python.framework
而我們安裝的 Python,其(默認)框架目錄為:

/Library/Frameworks/Python.framework
接下來,我們就分別(在 Mac 終端進行)刪除上面所提到的三部分。

第 1 步,刪除框架:

sudo rm -rf /Library/Frameworks/Python.framework/Versions/x.x


第 2步,刪除應用目錄:

sudo rm -rf "/Applications/Python x.x"


第 3 步,刪除指向 Python 的連接:

cd /usr/local/bin/
ls -l /usr/local/bin | grep '../Library/Frameworks/Python.framework/Versions/x.x' | awk '{print $9}' | tr -d @ | xargs rm

但是我的卸載過程並非如此順利,第一步就卡主了,因為我的 /Library/Frameworks/Python.framework/Versions目錄不存在。

我的方式

終端依次輸入以下命令

python3

import os

os.sys.path

復制打印出來的第一個路徑,退出python執行模式,刪除剛才復制的路徑 。

刪除完python3的路徑后,使用下面的命令卸載pyenv

brew uninstall pyenv

重啟電腦,重新安裝pyenv, 並通過pyenv安裝一個python3

參考:

Mac安裝多個Python版本

Mac下 Pyenv 的安裝使用

詳述 Mac 系統下安裝及卸載 Python 的方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM