En son Python 2.7.X veya 3.X'i Ubuntu'ya nasıl kurarım?


183

Http://python.org/download/ adresinden indirilen en son Python tarball'ını Ubuntu'ya yüklemek istiyorum .

Yüklemenin doğru yolu bu mu?

./configure
make
make install

Değilse, bunu nasıl yaparım?


1
Bir zamanlar bunun Ubuntu'ya daha yeni bir python sürümü kurmak için istendiğini hayal ediyorum . Şimdi, Ubuntu'da daha eski bir python sürümü kurmamız gerekiyor (çünkü hala birçok şey için python 2.7 gerekiyor) ... tl; dr: bu cevap artık geçerli değil / doğru değil. Bunun yerine, python3'ün varsayılan olarak (ve belki de en az bir python2.x) kurulu olduğunu varsayalım, ardından çalıştırın:sudo apt-get install python-2.7 python-pip
michael

@michael_n neden bahsediyorsun? kaynaktan derleme bu cevabı yanlış veya eski yapmaz. bu sadece farklı bir yöntem. Gerekirse işlemi sizin için otomatikleştirmek için apt komutunu kullanabilirsiniz.

ihtiyacın olanı kullan. Bunun, modası geçmiş olma iddiasını nasıl desteklediğini gerçekten anlamıyorum. Kendin dediğin gibi, ihtiyacın olduğunda kullan, çünkü müsait olmayabilir. Örneğin, linux için windows alt sistemi, dağıtım için ubuntu 16.04.1 (beta) olmasına rağmen bazı tarihli yazılım paketleri kullanmaktadır ve python2.6.2'yi ve akımın python2.7.12'sini bile python3'ü kullanmaktadır. Bu durumda, güncel paketler

1
@ jargonjunkie konu dışı, ancak haklısın. Eğer soru "python 2.7 'yi ubuntu 16.04+' de nasıl kurarımsudo apt-get install python2.7 ? Bu sadece kolay değil, doğru olan tek cevap, çünkü python modüllerini apt-get ve bunların bağımlılıkları ile kurabilmek için tek yol bu.
michael

umarım bu örnek göstermeye yardımcı olur (cevap eklendi). python ekosistemi çok özeldir / titizdir
michael

Yanıtlar:


199

İlk önce, bazı bağımlılıkları kurun:

sudo apt-get install build-essential checkinstall
sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

Ardından aşağıdaki komutu kullanarak indirin:

version=2.7.13
cd ~/Downloads/
wget https://www.python.org/ftp/python/$version/Python-$version.tgz

Ayıkla ve dizine git:

tar -xvf Python-$version.tgz
cd Python-$version

Şimdi, az önce denediğiniz komutu kullanarak kurun ve checkinstallgerekirse kaldırmayı kolaylaştırmak için kullanın:

./configure
make
sudo checkinstall

versionİhtiyacınız olan sürüme değiştirin ( version=2.7.1veya version=3.6.0örneğin).


20
Kullanım sudo make installve altinstallvarsayılan piton sürüm olarak ayarlayın
Shagun Sodhani

CXX=g++ ./configure./configure, g ++ bulunamadığını belirten bir uyarı veriyorsa kullanın
srj

2
Yukarıda anlatıldığı gibi kurduktan sonra, gerçekten kurulu olduğunu kontrol etmek için konsolda hangi komutları çalıştırıyorum?
J86,

9
"Python'u nasıl kuracağınız" basit sorunun en iyi cevabının böyle korkunç bir uyarı vermesi oldukça şaşırtıcıdır, "Python'u kurmanın en iyi yolu budur ve sisteminizi çok iyi bozabilir" gibi. Resmi Python web sitesinde çok sayıda indirme ve tek bir yükleme talimatı sayfası bulunmaması şaşırtıcıdır.
Patb

4
pat - basitçe "python nasıl yüklenir" sorusunun en iyi cevabı sudo apt-get install python, daha karmaşık cevap "en son python nasıl yükleneceği ", ima ise "kaynaktan" dır . Önceden derlenmiş ikilileri, herhangi bir işletim sisteminde daha riskli olan (ve farklı işletim sistemlerinde büyük ölçüde farklılık gösteren) bir 3. tarafa yüklemediğiniz sürece, aynı işletim sisteminde de aynı sorunu yaşarsınız. Ayrıca bu cevap 2012'den itibaren; daha yeni tavsiyeler için, bkz. askubuntu.com/questions/101591/…
michael

181

Kendinizi derlemek için yazma arzunuz gerçekten olmadığı sürece, tercih edilen yöntem, varsayılan olarak bulunmayan Python sürümlerini yüklemek için DeadSnakes PPA'yı kullanmaktır :

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python2.7

python2.4Veya benzeri diğer sürümler python3.6de mevcuttur.


13
Program notu: 10.04'taysanız, add-apt-repository kullanmadan önce python-software-özelliklerini yüklemeniz gerekebilir.
Craig Maloney

3
Bunun yerine ön inşa Binaryleri yüklemeden, yerel ortamda python inşa etmek önerilir
pylover

16
+1 :)really have a burning desire to compile it yourself
Watt

5
Şunu söylemeyi kaçırdım: 1. pparesmi olarak onaylanmadı, bu yüzden en güvenli yol kaynaktan inşa etmektir. 2. Bu, global olmayan bir python ile sonuçlanacaktır; sudoyerel olmayan paketleri değiştiremez veya kuramazlar. 3. Birden fazla piton, kaynaktan inşa edilerek farklı yerlere yerel olarak monte edilebilir.
Ioannis Filippidis

2
apt-get install python2.7Bu ikili python2.7 yüklemek python yerine ... çirkin!
Dhawal

26

En son Ubuntu için bu belgeye devam serbest bırakır 1 Ubuntu 16.04.1 sunucusu için varsayılan Python sürüm 3.5 ve Python 2.7 edilir: değil varsayılan olarak yüklenir. Yeni bir kurulumda ( pythonçalıştırılabilir bile olmadığını unutmayın ):

$ type python3 python2 python 
python3 is /usr/bin/python3
-bash: type: python2: not found
-bash: type: python: not found

$ python3 --version 
Python 3.5.2

$ python --version 
The program 'python' can be found in the following packages:
 * python-minimal
 * python3
Try: sudo apt install <selected package>

Not: Devam etmeden önce, muhtemelen hızlı yapmak isteyecektir sudo apt-get update, sudo apt-get upgradeve sudo apt-get dist-upgrade(bu komutlar yapıyor aslında tam olarak ne not lütfen, ben taze burada yüklemek varsayıyorum.)

Python 2.7'yi yüklemek kadar kolaydır:

$ sudo apt-get install python2.7

Python 2.7 kurulumunun ilk çıktısı aşağıdaki gibidir:

$ sudo apt-get install python2.7
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libpython2.7-minimal libpython2.7-stdlib python2.7-minimal
Suggested packages:
  python2.7-doc binutils binfmt-support
The following NEW packages will be installed:
  libpython2.7-minimal libpython2.7-stdlib python2.7 python2.7-minimal
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
Need to get 3,735 kB of archives.
After this operation, 15.8 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
...etc, etc...

Python 2.7'yi yükledikten sonra,

$ type python3 python2.7 python3.5 python2 python
python3 is /usr/bin/python3
python2.7 is /usr/bin/python2.7
python3.5 is /usr/bin/python3.5
bash: type: python2: not found
bash: type: python: not found

Ancak yine de bir sorun var, çünkü PyPI modüllerini henüz pipkuramazsınız - örneğin, jupyter notebook veya en son scipy veya numpy (vb.) İstiyorsanız, bunları kurmak pipve sonra pip installbunları açmak isteyeceksiniz . graphviz veya core system library gibi apt-getgerekli sistem bağımlılıklarını kurmak için .

$ type pip3 pip2 pip
bash: type: pip3: not found
bash: type: pip2: not found
bash: type: pip: not found

$ python3 -m pip --version 
/usr/bin/python3: No module named pip

Böylece pip kurmak, tekrar, bu kadar kolay sudo apt-get install python-pip:

$ sudo apt-cache search -n pip | egrep '^python[0-9]*-pip'
python-pip - alternative Python package installer
python-pip-whl - alternative Python package installer
python3-pip - alternative Python package installer - Python 3 version of the package

Her iki gerekecektir python-pipPython 2.7 için pipve python3-pipPython 3 için pip. Üzerinden kurulum apt-getgerekli bağımlılıkları yüklemek için emin; örneğin, pip2 kurulumu için çıktı:

$ sudo apt-get install python-pip
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  binutils build-essential dpkg-dev fakeroot g++ g++-5 gcc gcc-5 libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan2 libatomic1 libc-dev-bin libc6-dev
  libcc1-0 libcilkrts5 libdpkg-perl libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-5-dev
  libgomp1 libitm1 liblsan0 libmpx0 libpython-all-dev libpython-dev libpython-stdlib libpython2.7
  libpython2.7-dev libquadmath0 libstdc++-5-dev libtsan0 libubsan0 linux-libc-dev make
  manpages-dev python python-all python-all-dev python-dev python-minimal python-pip-whl
  python-pkg-resources python-setuptools python-wheel python2.7-dev
Suggested packages:
  binutils-doc debian-keyring g++-multilib g++-5-multilib gcc-5-doc libstdc++6-5-dbg gcc-multilib
  autoconf automake libtool flex bison gdb gcc-doc gcc-5-multilib gcc-5-locales libgcc1-dbg
  libgomp1-dbg libitm1-dbg libatomic1-dbg libasan2-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg
  libcilkrts5-dbg libmpx0-dbg libquadmath0-dbg glibc-doc libstdc++-5-doc make-doc python-doc
  python-tk python-setuptools-doc
The following NEW packages will be installed:
  binutils build-essential dpkg-dev fakeroot g++ g++-5 gcc gcc-5 libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan2 libatomic1 libc-dev-bin libc6-dev
  libcc1-0 libcilkrts5 libdpkg-perl libexpat1-dev libfakeroot libfile-fcntllock-perl libgcc-5-dev
  libgomp1 libitm1 liblsan0 libmpx0 libpython-all-dev libpython-dev libpython-stdlib libpython2.7
  libpython2.7-dev libquadmath0 libstdc++-5-dev libtsan0 libubsan0 linux-libc-dev make
  manpages-dev python python-all python-all-dev python-dev python-minimal python-pip
  python-pip-whl python-pkg-resources python-setuptools python-wheel python2.7-dev
0 upgraded, 49 newly installed, 0 to remove and 0 not upgraded.
Need to get 61.1 MB of archives.
After this operation, 169 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
...etc...

Bunun bir sonucu olarak ilginç bir şey olur: “standart” (ve önerilen PEP) python2ve python3(sadece python 2.7 ve python 3.5 için sembolik işaretler var):

$ type python3 python2 python python2.7 python3.5 
python3 is /usr/bin/python3
python2 is /usr/bin/python2
python is /usr/bin/python
python2.7 is /usr/bin/python2.7
python3.5 is /usr/bin/python3.5

Ayrıca isteyeceksiniz sudo apt-get install python3-pip; yüklemeden önce, sahip olduğunuz:

$ type pip pip2 pip3
pip is /usr/bin/pip
pip2 is /usr/bin/pip2
-bash: type: pip3: not found

$ python2 -m pip --version 
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ python3 -m pip --version 
/usr/bin/python3: No module named pip

Yükledikten sonra pip3,

$ sudo apt-get install python3-pip
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libpython3-dev libpython3.5-dev python3-dev python3-setuptools python3-wheel python3.5-dev
Suggested packages:
  python-setuptools-doc
The following NEW packages will be installed:
  libpython3-dev libpython3.5-dev python3-dev python3-pip python3-setuptools python3-wheel python3.5-dev
0 upgraded, 7 newly installed, 0 to remove and 0 not upgraded.
Need to get 38.0 MB of archives.
After this operation, 55.2 MB of additional disk space will be used.
Do you want to continue? [Y/n] 
...etc...

Ortaya çıkan sürümler:

$ type python python2 python3 pip pip2 pip3
python is /usr/bin/python
python2 is hashed (/usr/bin/python2)
python3 is hashed (/usr/bin/python3)
pip is /usr/bin/pip
pip2 is /usr/bin/pip2
pip3 is /usr/bin/pip3

$ pip --version 
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ pip3 --version 
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

$ python2 -m pip --version 
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)

$ python3 -m pip --version 
pip 8.1.1 from /usr/lib/python3/dist-packages (python 3.5)

Ve en sevdiğiniz python PyPI modüllerini yüklemeye başlamadan önce son bir şey: muhtemelen pip'in kendisini yükseltmek zorunda kalacaksınız (hem pip2 hem pip3, ayrı ayrı; ayrıca çalıştırılabilirler veya çalıştırılabilirler piparacılığıyla pythonçalıştırılmaları önemli değil) . pipçalıştırılabilirler, gerçek güncellemeler saklanır /usr/lib):

$ sudo -H python2 -m pip install --upgrade pip
...
$ sudo -H python3 -m pip install --upgrade pip
...

Artık tek başına pipveya python(via python -m pip {command}) içinde paketlenmiş sürümü çalıştırabilirsiniz .


[1] Tarihsel özet: Eski Ubuntu'da yalnızca Python 2.6 vardı, bu nedenle Python 2.7+ kurulumunun tüm yöntemleri vardı. Daha sonra, Python 2.7, halka açık havuzlara eklendikten sonra, en yeni düzeltmelerle birlikte (aynı zamanda) sıklıkla gerekli olan en yeni Python 2.7'yi kurmak için aynı zorluğu yaşadık. Bugünün durumu çok daha iyi / daha basit: şu anda halka açık depolarda bulunan şu anki Python 2.7 ve 3.5 (temelde insanların umursadığı sadece iki Python platformu sürümü) çok kararlı python modülleri , en son python değil . Bu yüzden şimdi Python "en son sürüm problemi" kısmen işletim sistemi depolarından ve aptPyPI’ye taşındı pip.)


2
Ubuntu 16.04.1'deki bu talimatlara uyarak LTS başarıyla python 2.7 kurulumunu gerçekleştirdi ve bunun gibi pip: sudo apt-get install python2.7; sudo apt-get kurulum python-pip; sudo -H python2 -m pip kurulumu - yükseltme pip; # Sürümün kontrol edilmesi: $ pip --version -> /usr/local/lib/python2.7/dist-packages adresindeki pip 9.0.1 (python 2.7); $ python --version -> Python 2.7.12
Robert Lujo

Pardon cehaletim ama Python versiyonlarını gösterirken "hasha" nın ne demek olduğunu bilebilir miyim?
Scientist

1
@TalhaIrfan Bu iyi bir soru (ve basitleştirilmiş bir cevaba izin verirseniz): bir komut bash (çoğu kabuk olarak) yazıldığında, cmd içinde bulunan bir takma ad, işlev veya çalıştırılabilir dosya olabilir $PATH. Env var PATH, içinde binlerce dosya bulunan tam bir dizin listesidir. Yürütülebilir dosyayı bulmayı hızlandırmak için, kabuk hızlı arama için önbelleğe alınmış bir karma tablo kullanır. Bayat olabilir, bu yüzden "karma", bu çalıştırılabilir dosyaya eşlenen bu komutun "hatırlandığını" bilmenizi sağlar. Unix.stackexchange.com/questions/5609/…
michael

@michael Çok teşekkürler! Bu gerçekten yararlı bir cevap: Kısa ve noktaya!
Scientist

1
@gaia, ayrı bir soru sormak isteyebilir, çünkü bunu çözmek için ileri geri istenebilir (veya bunu yazdığımdan beri bir şey değiştiyse). Belki ilk doğrulayın hem pip (2.7) & pip3(3.x) tamamen yükseltilmiş / yüklü ve sadece eski değildi - yani sudo apt-get install python-pip python3-pipve sudo -H python2 -m pip install --upgrade pipve sudo -H python3 -m pip install --upgrade pip ... Ya gerçekten bir izin bir sorun olup olmadığını (o çalışır" ile gösterilir sudo "), sonra izini sürmesi biraz daha zor olacak.
michael

11

12.04

Aşağıdaki varsa achu yanıtını , daha sonra terim libread5-devşekilde değiştirilmelidir libreadline-gplv2-dev. Yani tam komut şöyle olurdu:

sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev

4

Ayrıca pyenv üzerinden indirip yükleyebilirsiniz.

#Install Pyenv
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
export PATH=~/.pyenv/bin:/usr/local/hadoop/bin/:$PATH
echo 'export PYENV_ROOT="~/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

#Install Python
pyenv install 2.7.8
pyenv global 2.7.8

pyenv install 3.4.5
pyenv global 3.4.5

Bu, Ubuntu'nun eski bir sürümünde Python'un gerçekten güncel bir sürümünü edinmenin en temiz yoludur. pyenv-virtualenvEklenti aracılığıyla sanalenv desteği de içerir , farklı modül gereksinimlerine sahip uygulamaların çakışma olmadan yüklenmesini kolaylaştırır.
RichVel

2
Pyenv hakkında iki uyarı: (1) sadece bir bash kabuğundan çalışır (ya da belki zsh, ama kesinlikle Ubuntu'da / bin / sh olan çizgi değil) ve (2) bir giriş kabuğu gerektirmez (örneğin bash --login) her zaman örneğin Ansible'dan ulaşmak kolaydır. Etkileşimli kullanım için en iyisi, komut dosyası sunucuları için daha az iyi.
RichVel

0

Tweaked intro ile çoğunlukla bu cevabın bir aynası

Pyenv'i tavsiye ederim . Başlık bağımlılıklarının kurulmasının yanı sıra yapım sürecini de otomatikleştirir (aşağıya bakınız). Python'un yeni (veya eski) bir sürümünü basitçe söyleyerek oluşturabilir ve yükleyebilirsiniz pyenv install 3.6.0. Her şey kullanıcı olarak çalışır, bu yüzden Ubuntu'nun kullandığı Python'u karıştırmaktan endişelenmenize gerek yoktur .

Apt-repo tabanlı seçeneklerden bazılarının aksine (örneğin, ölüm yılanları), genellikle bir sürümden sonra aynı gün çalışacaktır pyenv updateçünkü bir başkasının paketlemesini beklemeniz gerekmez. Yükleyebileceğiniz tüm sürümleri görünpyenv install --list

Pyenv yükleyin

  1. CPythons oluşturmak için gerekli araçları ve başlıkları yükleyin (PyPy veya Jython gibi egzotik Pythons'ın başka bağımlılıkları olabilir). Git pyenv tarafından kullanılır, ayrıca kaynak dallarının kurulmasını / kurulmasını sağlar, böylece 3.8 olanı kurabilirsiniz, yani GitHub'tan yeni çıkan CPython'un ana kolu:

    sudo apt-get install -y git
    sudo apt-get install -y build-essential libbz2-dev libssl-dev libreadline-dev \
                            libffi-dev libsqlite3-dev tk-dev
    
    # optional scientific package headers (for Numpy, Matplotlib, SciPy, etc.)
    sudo apt-get install -y libpng-dev libfreetype6-dev    
  2. Yükleyici betiğini çalıştırın (orijinal yazar tarafından pyenv ve çok kullanışlı bazı pyenv eklentileri yükler; daha fazla bilgi için buraya bakın )

    curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
  3. Kendinize init satır ekleyin ~/.profileveya ~/.bashrc(kurulum komut dosyasının sonunda belirtilir):

    export PATH="~/.pyenv/bin:$PATH"
    eval "$(pyenv init -)"
    eval "$(pyenv virtualenv-init -)"
  4. Kabuğunu yeniden başlat (kapat ve aç veya exec $SHELL) veya profil komut dosyasını yeniden yükle. (örn. ile source ~/.bashrc)

Bitti!

Bir ortam kurmak

Python sistemine dokunmamak (genellikle kötü bir fikir; işletim sistemi düzeyinde servisler bazı kütüphane sürümlerine vb. Güveniyor olabilir) kendi ortamınızı yaratır, kolay! Daha da iyisi, hayır sudo, bunun için ya da pipyükler!

  1. Tercih ettiğiniz Python sürümünü kurun (bu işlem kaynağını indirir ve kullanıcı için oluşturur, giriş gerekmez)

    pyenv install 3.6.0
  2. Sanalenv yapın böylece daha sonra isterseniz diğerlerini de yapabilirsiniz

    pyenv virtualenv 3.6.0 general
  3. Küresel olarak aktif yap (kullanıcın için)

    pyenv global general
  4. İstediğinizi Python / pip, vb. İle yapın. Bu sizindir.

Kütüphanelerinizi daha sonra temizlemek istiyorsanız, virtualenv ( pyenv uninstall general) dosyasını silebilir veya yeni bir tane ( pyenv virtualenv 3.6.0 other_proj) oluşturabilirsiniz. Ayrıca, dizin başına aktif ortamlara sahip olabilirsiniz: pyenv local other_projbir .python-versiondosyayı geçerli klasörünüze bırakacak ve Python veya pip yüklü Python yardımcı programlarını çağırdığınızda veya altından veya altından çağırdığınızda, bunlar pyenv tarafından silinecektir.

Sorun giderme

  • bash: pyenv: command not found, fish: Unknown command 'pyenv'

    1. Çekinizin $PATH, şu şekilde biter bir giriş olmalıdır .pyenv/bin. Eğer eksikse, yukarıdaki pyenv'i kurun altında # 3 AND # 4'ü (kabuğunuzu yeniden başlatın) takip ettiğinizden emin olun .
  • pyenv: no such command 'virtualenv'

    1. Eğer yükleyici betiğini kullanmadıysanız, muhtemelen sadece root pyenv paketini yüklediniz. Eklenti ekleme talimatları için pyenv-virtualenv bölümüne bakın.
    2. Yükleyici komut dosyasını kullandıysanız, görünüp görünmediğini kontrol edin pyenv commands.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.