wsl下的python環境管理


開頭

之前一直都在用python解釋器和virtualenv來管理python的虛擬環境,但是被老大吐槽不好用之后,換了一種新的管理方式,那就是
pyenv + pyenv-virtualenv的使用

先裝pyvenv,用pyvenv裝python,然后用pyenv-virtualenv管理

pyenv 的參考文檔 https://github.com/pyenv/pyenv

什么是pyenv

簡單的說,pyenv是管理python版本的工具。安裝pyenv后,可以管理各種python版本,並且各個版本的環境完全獨立,互不干擾, 不用你每次需要解釋器的時候到處去找安裝包,很好的管理的python版本

安裝pyenv

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

如果你使用 bash,就依次執行如下命令:

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bashrc

如果你使用 zsh,就依次執行如下命令:

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

在使用 pyenv 之前,重新初始化 shell 環境,執行如下命令

exec $SHELL

然后就可以使用pyenv了,簡單的命令如下

# 查看當前版本
pyenv version

# 查看所有版本
pyenv versions

# 查看所有可安裝的版本
pyenv install --list

# 安裝指定版本
pyenv install 3.6.5 -v
# 安裝新版本后rehash一下
pyenv rehash

# 刪除指定版本
pyenv uninstall 3.5.2

# 指定全局版本
pyenv global 3.6.5

# 指定多個全局版本, 3版本優先
pyenv global 3.6.5 2.7.14

# 實際上當你切換版本后, 相應的pip和包倉庫都是會自動切換過去的

當pyenv install 出錯的時候,可以參考 https://blog.csdn.net/BigData_Mining/article/details/100100375
或者 下載很慢的時候 可以參考 https://www.cnblogs.com/Sungeek/p/10036033.html 離線安裝

當出現切換版本無法切換的情況一般是因為用pyenv指定了local版本。
解決方法:
取消設置local版本:

pyenv local --unset

就可以自由的切換版本了

pyenv global 3.6.5
# 查看目前版本
pyenv versions

因為本人用的是wsl的系統所以會出現如下的情況:
pyenv版本成功切換了但python版本不變的情況,且出現 如下的報錯

sourece 的時候出現
WARNING: `pyenv init -` no longer sets PATH.
Run `pyenv init` to see the necessary changes to make to your configuration.
執行python的時候出現
zsh: command not found: python

這時候是因為python命令沒有加軟連接的導致找不到python,所以在終端中輸入

sudo ln -s /usr/bin/python3.6 /usr/bin/python

wsl默認自帶了python3.6.9的解釋器
然后根據提示執行

pyenv init 

將這部分腳本復制到你的~/.zshrc下(將之前的export加進來的先刪掉)

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"

然后執行刷新
source ~/.zshrc

這時候,pyenv就可以正常運行啦!(md,搞了好久)

什么是pyenv-virtualenv

pyenv-virtualenv 是一個管理 python 虛擬環境的 pyenv 插件,具體可以查看 pyenv-virtualenv 文檔。https://github.com/pyenv/pyenv-virtualenv
python 虛擬環境相當於一個獨立的 python 版本,有自己獨立的目錄,也可以獨立的安裝第三方庫,而不會相互干擾

安裝pyenv-virtualenv

從 Github 克隆 pyenv-virtualenv 倉庫

git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv

會放到~/.pyenv的plugins的目錄下,需要先確認是否有這個目錄
然后將命令寫到zshrc中

echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc

然后哦執行

pyenv virtualenvs # 第一次執行應該是沒有環境的
# 從當前版本創建一個虛擬環境
$ pyenv version
3.7.7 (set by /home/keke/.pyenv/version)
$ pyenv virtualenv venv37
# 稍等一下,就可以看到環境創建成功,兩種方式查看
1、pyenv versions
2、 pyenv virtualenvs

激活關閉虛擬環境

pyenv activate <virtualenv-name>
pyenv deactivate

或者
pyenv local <virtualenv-name>
#取消設置
pyenv local --unset

如果報錯 則輸入以下兩句

$ echo 'eval "$(pyenv init -)"' >> ~/.zshrc
$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc
$ exec $SHELL
$ source ~/.zshrc

至此 則成功啟動

常用命令

pyenv命令集

pyenv install --list

    查詢所有可以安裝的版本
    
pyenv install 2.7.14
    
    安裝所需的版本
    
pyenv uninstall

    卸載特定的Python版本。

pyenv version

    顯示當前活動的Python版本
    
pyenv global 2.7.14

    Python的全局設置,整個系統生效
    
pyenv global 2.7.14

    Python的局部設置,當前目錄生效
    
pyenv local --unset

    取消設置    

更多參考GitHub...

pyenv-virtualenv命令集:

pyenv virtualenv 2.7.14 venv2714

    制定版本創建virtualenv
    
pyenv virtualenvs
    
    列出現有virtualenvs

pyenv activate virtualenv的名稱

    激活pyenv virtualenv
    
pyenv deactivate

    停用pyenv virtualenv

pyenv uninstall my-virtual-env

    刪除現有virtualenv

特殊情況

遇到pyenv切換了但是python版本卻不改變的問題,需要修改 bashrc 里面的內容,參考

完。


免責聲明!

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



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