2016-09-30 62 views
0

是否有一種標準的方式來將python2切換爲python3作爲默認python,類似於如何使用virtualenv在不同的沙盒python環境之間切換?在python2和python3之間切換作爲默認python

我想避免手動擺弄符號鏈接和PATH變量,以便解決方案是可移植的。

由於是關於切換python版本,所以最好不要使用python編寫解決方案,而應該使用bash或其他便攜方式。

理想情況下,我想爲nodejs找到類似於nvm的東西,或者爲Ruby用rbenv

+2

你必須用'virtualenv -p/usr/bin/python2 env2'和'virtualenv -p/usr/bin/python3 env3'創建虛擬環境,當然它們將是獨立的環境,你必須安裝依賴關係。 – metatoaster

+0

@metatoaster:這是一個有趣的可能性 - 也就是說,例如爲Python 2安裝的'virtualenv'可用於創建Python 3環境(反之亦然)?這僅僅是可執行文件在這種情況下是重要的嗎? – ccpizza

回答

0

我想你說的是在Windows下使用Python,因爲你提到了PATH變量。 Python3的最新版本帶有所謂的Python啓動器。您可以運行py -2以啓動Python2解釋程序,並運行py -3以啓動Python3解釋程序。我希望這回答了你的問題。

+1

Linux也使用$ PATH環境變量..另一方面,Windows默認情況下沒有bash或符號鏈接AFAIK,所以我的猜測是OP在Linux上。 – flcoder

+0

@flcoder:是的,我正在尋找一個osx/linux解決方案,bash或c-based。 – ccpizza

1

This向我們展示瞭如何使用update-alternatives和/或~./bashrc使用別名:alias python=/usr/local/bin/python2.7

+1

這絕對是基於Debian的Linuces的答案,但會遺留掉OSX和非Debian Linux系統。 – ccpizza

+0

鏈接不是答案,請將鏈接的相關部分添加到答案中。 –

+0

如果您選擇調查更多信息,則鏈接是用於提供額外信息的,也就是說,我們都可以使用某些手持功能。我的答案是:在〜。/ bashrc,.eg,'alias python =/usr/local/bin/python2.7'中使用'update-alternatives'和/或使用別名。如果這個答案不適合你,免費投票。如果您對我的回答有任何疑問,請隨時詢問他們。 – flcoder

1

有一種方法,它被稱爲Conda(可以安裝Miniconda下手)。

它可以讓您創建虛擬環境,您可以在其中指定要使用的Python解釋器版本。例如:

conda create -n new_environment python=3.5 

Conda將爲您下載解釋器,因此您不需要在系統中使用它。如果你使用的是Windows,那麼你可以在不需要編譯它們的情況下安裝它們(如果它們沒有完全用Python編寫),這非常方便。因此,例如,conda install numpy matplotlib不會要求您編譯任何這些軟件包。

+0

一個有趣的方法,但似乎不是很輕。 – ccpizza

+0

@ccpizza你的意思是Conda或者Miniconda? Miniconda並不重要,它允許您完全控制要在任何虛擬環境中使用的Python版本,即使不需要在系統中安裝該版本。 – Peque

+0

我看着miniconda:它安裝了一個單獨的python運行庫。我正在尋找一個簡單的工具來切換現有的運行時間。 – ccpizza

0

一些調查研究後,它看起來像一個可能的解決方案可能是pyenv與在pyenv tutorial它只能識別一個全系統的Python運行時(無論是默認的那一刻所描述的用法),不提供在系統範圍的python2和python3之間切換的選項。

貌似pyenv只能在系統Python和任何經由pyenv顯式安裝的版本可通過所有pyenv install --list可以看出並用例如安裝的之間切換pyenv install 3.5.2。換句話說,python3必須通過pyenv安裝,以便能夠在2和3之間切換。

Pyenv can integrate with virtualenv由於它包含所有版本的anaconda,miniconda,pypy,jython,stackless等等。這可能是安裝多個版本的python的最簡單的方法,它不會與你的軟件包管理器一起提供,也就是在舊版Linux發行版中,在它們的回購版中沒有現代python。

但是從長遠來看,所有的事情考慮,我發現,通過metatoaster提出的解決方案是簡單的,完全符合我的要求,因爲我可以使用python2的virtualenv沒有任何開銷同時創建python2和python3環境:

python -V 
Python 2.7.12 
mkdir -p ~/.virtualenvs && cd ~/.virtualenvs 
virtualenv -p /usr/bin/python3 mypy3env 
workon mypy3env 
python -V 
>>> Python 3.5.2 
相關問題