1 背景&概述
因某些需求,需要安裝 tensorflow ,很自然地在終端敲下了以下命令:
1pip install tensorflow
然後。。。
好傢伙???
居然沒有??
因為是 python 3.9 ,去 pypi 搜尋了,居然還真沒有支援的,最高只有 python 3.8 :
於是便考慮乙個多版本的 python 環境,碰巧就在 github 上看到了乙個 22.3k 的東西:
這就是 pyenv ,乙個簡單的 python 版本管理器,可以輕鬆地在各個 python 版本之間進行切換。
好了廢話不說,進入正題。
2 安裝
安裝有兩種方式:
自動安裝
手動安裝
2.1 自動安裝12
3curl | bash
# 或curl -l | bash
2.2 手動安裝
手動安裝大致分為三步:
安裝pyenv
配置環境變數
初始化2.2.1 安裝 pyenv
筆者系統 manjaro ,可以直接 yay 安裝:
1yay -s pyenv
其他系統的可以使用 apt search / yum search 等看看軟體包倉庫有沒有,有的話直接安裝即可,沒有的話,可以 clone 安裝:
1git clone ~/.pyenv
( 這一步是可選的 )接著就是編譯動態 bash 擴充套件進行加速:
1cd ~/.pyenv && src/configure && make -c src
官方解釋說,不用害怕編譯失敗,因為仍然會正常工作。
2.2.2 配置環境變數
這一步就是把 pyenv 以及更新後的 path 配置成環境變數,官方文件按照 shell 型別進行了分類,根據自己情況選擇即可。
2.2.2.1 bash12
echo 'export pyenv_root="$home/.pyenv"' >> ~/.bash_profile
echo 'export path="$pyenv_root/bin:$path"' >> ~/.bash_profile
2.2.2.2 zsh12
echo 'export pyenv_root="$home/.pyenv"' >> ~/.zshrc
echo 'export path="$pyenv_root/bin:$path"' >> ~/.zshrc
2.2.2.3 fish shell12
set -ux pyenv_root $home/.pyenv
set -ux fish_user_paths $pyenv_root/bin $fish_user_paths
2.2.3 初始化
配置完環境變數後還要進行初始化操作,文件同樣按 shell 型別進行了分類。
2.2.3.1 bash
1echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
2.2.3.2 zsh
1echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.zshrc
2.2.3.3 fish shell
1echo -e '\n\n# pyenv init\nif command -v pyenv 1>/dev/null 2>&1\n pyenv init - | source\nend' >> ~/.config/fish/config.fish
2.3 測試
重新開啟乙個終端,輸入 pyenv ,輸出如下資訊就表明安裝成功了:
pyenv實現python多版本共存
在終端執行如下命令以安裝 pyenv 以及幾個外掛程式 curl l bash echo export pyenv root home pyenv bashrc echo export path pyenv root bin path bashrc echo eval pyenv init bash...
使用pyenv來管理python版本
使用pyenv可以很方便的切換python版本,而不會影響系統的python版本,對需要使用supervisor 僅支援python2 託管程式,專案使用python3開發的情況十分有用 pyenv的一些認識ubuntu vm 0 9 ubuntu srv www trader log galler...
使用pyenv對python進行版本控制 很好用
相對於python自帶的virtualenv來說,pyenv的使用要便利些,更不用說自帶的外掛程式python virtualenv,建立虛擬環境就更為方便了,其實最讓我心水的功能是建立的虛擬環境,進入設定好的工作目錄即自動啟用虛擬環境,退出即關閉,真真是超級方便。git clone pyenvcu...