国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

pyenv命令管理多個Python版本

2020-02-23 04:31:01
字體:
來源:轉載
供稿:網友

從接觸Python以來,一直都是采用 virtualenv 和 virtualenvwrapper 來管理不同項目的依賴環境,通過 workon 、 mkvirtualenv 等命令進行虛擬環境切換,很是愉快。

然而,最近想讓項目能兼容更多的Python版本,例如至少同時兼容 Python2.7 和 Python3.3+ ,就發現采用之前的方式行不通了。

最大的問題在于,在本地計算機同時安裝 Python2.7 和 Python3 后,即使分別針對兩個Python版本安裝了 virtualenv 和 virtualenvwrapper ,也無法讓兩個Python版本的 workon 、 mkvirtualenv 命令同時生效。另外一方面,要想在本地計算機安裝多個Python版本,會發現安裝的成本都比較高,實現方式也不夠優雅。

幸運地是,針對該痛點,已經存在一個比較成熟的方案,那就是 pyenv 。

如下是官方的介紹。

pyenv lets you easily switch between multiple versions of Python. It's simple, unobtrusive, and follows the UNIX tradition of single-purpose tools that do one thing well.This project was forked from rbenv and ruby-build , and modified for Python.

本文就針對 pyenv 最核心的功能進行介紹。

基本原理

如果要講解 pyenv 的工作原理,基本上采用一句話就可以概括,那就是:修改系統環境變量 PATH 。

對于系統環境變量 PATH ,相信大家都不陌生,里面包含了一串由冒號分隔的路徑,例如 /usr/local/bin:/usr/bin:/bin 。每當在系統中執行一個命令時,例如 python 或 pip ,操作系統就會在 PATH 的所有路徑中從左至右依次尋找對應的命令。因為是依次尋找,因此排在左邊的路徑具有更高的優先級。

而 pyenv 做的,就是在 PATH 最前面插入一個 $(pyenv root)/shims 目錄。這樣, pyenv 就可以通過控制 shims 目錄中的Python版本號,來靈活地切換至我們所需的Python版本。

如果還想了解更多細節,可以查看 pyenv 的文檔介紹及其源碼實現。

環境初始化

pyenv 的安裝方式包括多種,重點推薦采用 pyenv-installer 的方式,原因主要有兩點:

通過 pyenv-installer 可一鍵安裝 pyenv 全家桶,后續也可以很方便地實現一鍵升級;
pyenv-installer 的安裝方式基于 GitHub ,可保證總是使用到最新版本的 pyenv ,并且 Python 版本庫也是最新最全的。
install && config

通過如下命令安裝 pyenv 全家桶。

$ curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash

內容除了包含 pyenv 以外,還包含如下插件:

    pyenv-doctor pyenv-installer pyenv-update pyenv-virtualenv pyenv-which-ext

安裝完成后, pyenv 命令還沒有加進系統的環境變量,需要將如下內容加到 ~/.zshrc 中,然后執行 source ~/.zshrc 。

export PATH=$HOME/.pyenv/bin:$PATHeval "$(pyenv init -)"eval "$(pyenv virtualenv-init -)"            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 府谷县| 武川县| 仙桃市| 垦利县| 新余市| 元氏县| 博兴县| 巴中市| 井陉县| 阿拉善左旗| 木兰县| 广汉市| 张掖市| 荃湾区| 陇西县| 广元市| 阜宁县| 新竹县| 防城港市| 沾益县| 邵阳县| 云安县| 济阳县| 花莲市| 白玉县| 巴马| 诸城市| 湘潭县| 毕节市| 龙陵县| 诏安县| 双峰县| 曲阜市| 温泉县| 舟山市| 伊通| 镶黄旗| 昌宁县| 泾阳县| 阳城县| 德庆县|