2016-11-15 64 views
2

我需要在Ubuntu 16.04.1 LTS上同時使用Python 2.7.12和python 3.5.2。 Python 3是預裝的,所以我不知道它在哪裏,根據目錄的路徑,而Python 2坐在/usr/local/lib/python2.7/如何在相同的Ubuntu操作系統上分別使用,維護和安裝python 2.7和python 3.5的庫?

我在SO和askubuntu上發現了很多關於如何安裝的問題,但沒有提到如何分別使用它們,安裝不同的庫,以及我應該避免或小心的問題,如果我維護這個雙重python的東西長期?例如,我通常運行pip install來安裝庫,我可以檢查它是否安裝在我的python2目錄中,但是如何在沒有衝突的情況下爲我的python3安裝相同的包?例如:python3 pip install <package> ??在哪裏安裝了默認的python3?而我怎麼打電話python3的路徑,其中python不是該命令的一部分,例如:pip freeze,sudo-apt get等? PS:我還沒有正式與Virtualenv一起工作,但我已經被告知通常對於在Python語言版本中隔離項目非常有用,而不是隔離兩個不同的語言版本。

請讓我知道。

謝謝

+0

你可以使用python2和python3。 Python3應該位於/usr/local/lib/python3.x中,以運行pythonx寫入pythonx scrypt.py – eyllanesc

+0

'/ usr/local/lib/python3.x'只包含一個名爲dist-packages的目錄,它本身就是空。所以我最初認爲它的ghost文件夾和python3並沒有真正安裝,但是當我在終端中運行'python3'時,我得到:'Python 3.5.2(默認,2016年7月5日,12:43:10) [GCC 5.4。 0 20160609] on linux 輸入「help」,「copyright」,「credits」或「license」以獲取更多信息。「所以我不知道該路徑是否正確.. –

+0

是的,這是正確的 – eyllanesc

回答

6

這絕對沒有問題,因爲Python會爲您做這件事。你根本不需要virtualenv。

如果你使用Ubuntu的軟件包,請確保您使用python3-版本的Python 3,和正常python-版本的Python 2
例如,python3-numpypython-numpy

如果使用pip安裝額外的軟件包,你一個既可以使用pip腳本附加版本號:pip2.7pip3.5,或者,我的首選方法,調用pip作爲各自的Python可執行模塊:

python2.7 -m pip install <whatever> 

python3.5 -m pip install <whatever> 

除此之外,不應該有任何問題:Python的專賣店在完全不同的目錄包,和EA ch Python可執行文件只使用其各自的指令。

不是擺弄PYTHONPATH,除非你真的知道你在做什麼。這有可能將您的PYTHONPATH設置爲使用Python 2.7模塊的目錄,然後使用Python 3.5來運行。


如果您從頭開始,您可能需要先安裝pip

對於系統的Python(S),使用相關的包:

sudo apt install python-pip 
sudo apt install python3-pip 

對於您的本地安裝的Python(S),利用內置的引導程序模塊:

pythonx.y -m ensurepip 

有關操作系統安裝的Python可執行文件的注意事項:

Python 3.5位於/usr/bin/python3.5,Python 2.7(OS一)位於/usr/bin/python2.7。 你甚至可以使用OS 2.7的一個旁邊的您的本地安裝/usr/local/bin/python2.7(並因爲您使用了錯誤的軟件包而無法找到軟件包時無法找到)。
或者在Python 3.5旁邊安裝Python 3.6(假如您已經使用了make altinstall,那麼python3不會被覆蓋)。

這也是爲什麼你真的不希望運行pip(甚至pip2.7的是pip2.7可以讓你的系統中的一個,而不是一個在/usr/local/bin/pip2.7,這取決於你PATH

(這同樣爲python2.7可執行文件,所以如果你需要指定的完整路徑/usr/local/bin/python2.7來運行一個(或有一個別名),同樣適用於pip2.7。如果,另一方面,/usr/local/bin你的PATH上的第一個,你應該原則上不會碰到相同的pippython可執行文件。)

+0

'python2.7 -m pip freeze'和'python3.5 -m pip freeze',返回'/usr/local/bin/python2.7:沒有名爲pip的模塊和'/usr/bin/python3.5:沒有分別命名爲pip的模塊。然而,'pip2.7 freeze'工作,而'pip3.5 freeze'返回'pip3.5:command not found'。思考? –

+0

對於3.5,請嘗試'sudo apt install python3-pip'。對於Python 2.7,請嘗試'/usr/local/bin/python2.7 -m ensurepip'。看起來Ubuntu默認不安裝pip。 – Evert

+0

'ensurepip'引導程序模塊必須只運行一次,以便自己安裝'pip'(並且只適用於您自己安裝的python2.7,因爲它不包含軟件包。「pip2的完整路徑是什麼.7'你用上面的那個? – Evert

相關問題