Vraag Hoe installeer ik de nieuwste Python 2.7.X of 3.X op Ubuntu?


Ik wil de nieuwste Python-tarball op Ubuntu installeren, gedownload van http://python.org/download/.

Is dit een correcte manier om te installeren?

./configure
make
make install

Zo nee, hoe doe ik dat?


157
2018-02-05 12:02


oorsprong


Op een gegeven moment stel ik me voor dat dit werd gevraagd om een ​​te installeren nieuwere versie van python op Ubuntu. Nu is het vereist om een ​​te installeren ouder  versie van python op Ubuntu (omdat we nog steeds Python 2.7 vereisen voor veel dingen) ... tl; dr: dit antwoord is niet langer actueel / correct. In plaats daarvan, aangenomen dat python3 standaard is geïnstalleerd (en misschien een minimale python2.x), voer dan uit: sudo apt-get install python-2.7 python-pip - michael
@michael_n Waar heb je het over? het compileren van de bron maakt dit antwoord niet incorrect of verouderd. het is gewoon een andere methode. u kunt apt gebruiken om het proces voor u te automatiseren indien nodig. - jargonjunkie
u gebruikt wat u nodig hebt. Ik zie niet echt hoe dit je bewering ondersteunt dat dit verouderd is. zoals je zelf hebt gezegd, je gebruikt het wanneer dat nodig is omdat het misschien niet beschikbaar is. Windows-subsysteem voor Linux gebruikt bijvoorbeeld enkele gedateerde softwarepakketten, zelfs als de distro ubuntu 16.04.1 (bèta) is en python2.6.2 gebruikt, en python3 zelfs als de huidige python2.7.12 is. In dat geval zou ik moeten compileren als ik up-to-date pakketten wil - jargonjunkie
@jargonjunkie je bent off-topic, maar correct. Als de vraag is "hoe installeer ik python 2.7 op ubuntu 16.04+" wat het is (sinds 16.04 is nu beschikbaar, wat mijn punt is), dan is het eenvoudig sudo apt-get install python2.7. Dit is niet alleen eenvoudiger, het is het enige juiste antwoord, omdat dit de enige manier is waarop je python-modules via apt-get en hun afhankelijkheden beurtelings kunt installeren. - michael
hoop dat dit helpt illustreren (toegevoegd antwoord). het ecosysteem van de python is heel bijzonder / kieskeurig, en je kunt gemakkelijk in "afhankelijkheids hel" raken als je je pythonomgeving niet zorgvuldig bouwt askubuntu.com/a/831075/17060 - michael


antwoorden:


Installeer eerst een aantal afhankelijkheden:

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

Download dan met behulp van de volgende opdracht:

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

Pak uit en ga naar de map:

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

Installeer nu met behulp van de opdracht die u zojuist hebt geprobeerd, met checkinstall in plaats daarvan om het desgewenst eenvoudiger te maken om de installatie ongedaan te maken:

./configure
make
sudo checkinstall

Verandering version naar welke versie je nodig hebt (version=2.7.1 of version=3.6.0, bijvoorbeeld).


184
2018-02-05 12:20



Gebruik sudo make install en niet altinstall om het in te stellen als standaard python-versie - Shagun Sodhani
gebruik CXX=g++ ./configure if ./configure geeft een waarschuwing af dat g ++ niet is gevonden - srj
na installatie zoals hierboven aangegeven, welke opdrachten voer ik uit in de console om te controleren of deze inderdaad is geïnstalleerd? - Ciwan
Het is buitengewoon dat het beste antwoord op de eenvoudige vraag "hoe Python te installeren" zo'n vreselijke waarschuwing zou hebben, het is als "dit is de beste manier om Python te installeren en het kan heel goed je systeem breken" ... Het is ook zeer verrassend dat de officiële Python-website heel veel downloads bevat en geen enkele pagina met installatie-instructies. - patb
pat - het beste antwoord op de simpele vraag "hoe python te installeren" is sudo apt-get install python, hoe ingewikkelder het antwoord is "hoe het te installeren laatste python ", waarbij de implicatie" van bron "is. Je hebt hetzelfde probleem in elk OS tenzij je vooraf gecompileerde binaire bestanden van een derde partij installeert, wat wederom riskant is voor elk besturingssysteem (en sterk varieert in verschillende besturingssystemen) Dit antwoord komt ook uit 2012, voor meer recent advies, zie askubuntu.com/questions/101591/... - michael


Tenzij je echt een brandende wens hebt om het zelf te compileren, is de voorkeursmanier om de DeadSnakes PPA om versies van Python te installeren die niet standaard zijn inbegrepen:

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

Andere versies, zoals python2.4 of python3.6, etc. zijn ook beschikbaar.


159
2018-02-05 14:40



Program note: als je op 10.04 staat, moet je mogelijk python-software-eigenschappen installeren voordat je add-apt-repository gebruikt. - Craig Maloney
Het wordt aanbevolen om python te bouwen in uw lokale omgeving, in plaats van het te installeren vanaf voorgebouwde binaries - pylover
+1 :) really have a burning desire to compile it yourself - Watt
Gemist om te vermelden dat: 1. de ppa is niet officieel goedgekeurd, dus de veiligste manier is om te bouwen vanaf de bron. 2. dit zal resulteren in een wereldwijde python, dat nietsudoers kunnen pakketten niet wijzigen of installeren, niet een lokale. 3. Meerdere pythons kunnen lokaal op verschillende locaties worden geïnstalleerd door vanaf de bron te bouwen. - Ioannis Filippidis
apt-get install python2.7Dit installeert de binaire python2.7 in plaats van python ... lelijk !! - Dhawal


Dit blijven documenteren voor de nieuwste Ubuntu-releases1 : voor de Ubuntu 16.04.1-server is de standaardpython versie 3.5 en Python 2.7 is niet standaard geïnstalleerd. Op een nieuwe installatie (merk op dat er niet eens een is python uitvoerbaar):

$ 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>

Opmerking: voordat u verdergaat, wilt u waarschijnlijk snel handelen sudo apt-get update, sudo apt-get upgrade, en sudo apt-get dist-upgrade (let alstublieft op wat deze commando's eigenlijk doen: ik neem hier een nieuwe installatie aan.)

Python 2.7 installeren is net zo eenvoudig als:

$ sudo apt-get install python2.7

De initiële output van het installeren van python 2.7 is als volgt:

$ 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...

Na het installeren van python 2.7,

$ 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

Maar er is nog steeds een probleem, omdat je PyPI-modules nog niet via kunt installeren pip - bijvoorbeeld, als je een jupyter-notebook wilt, of de nieuwste scipy of numpy (etc), wil je installeren pip en dan pip install die, en nog steeds wenden zich tot apt-get om nodig te installeren systeem afhankelijkheden, zoals graphviz of core system libraries.

$ 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

Dus om pip opnieuw te installeren, het is net zo eenvoudig als 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

Je hebt beide nodig python-pip voor de Python 2.7 pip en de python3-pip voor de Python 3 pip. De installatie via apt-get is zeker om de vereiste afhankelijkheden te installeren; Dit is bijvoorbeeld de uitvoer voor het installeren van pip2:

$ 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...

Een interessant iets gebeurt als gevolg hiervan: je hebt nu de "standaard" (en PEP aanbevolen) python2 en python3 (die slechts symlinks zijn naar python 2.7 en python 3.5):

$ 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

Je wilt het ook sudo apt-get install python3-pip; voordat je installeert, heb je:

$ 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

Na installatie 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...

De resulterende versies:

$ 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)

En nog een laatste ding voordat je kunt gaan en beginnen met het installeren van al je favoriete Python PyPI-modules: je zult waarschijnlijk de pip zelf moeten upgraden (zowel pip2 als pip3, afzonderlijk, het maakt ook niet uit of pip wordt aangeroepen via de python uitvoerbare bestanden of de pip uitvoerbare bestanden, de daadwerkelijke upgrades worden opgeslagen in /usr/lib):

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

U kunt nu de standalone uitvoeren pip of de versie die erin is gebundeld python (via python -m pip {command}).


[1] Historische samenvatting: oudere Ubuntu had alleen Python 2.6, dus alle verschillende methodes om Python 2.7+ geïnstalleerd te krijgen. Later, nadat Python 2.7 aan de openbare repositories was toegevoegd, hadden we nog steeds dezelfde uitdaging om de nieuwste Python 2.7 met de nieuwste oplossingen te installeren, wat (te) vaak nodig was. De situatie van vandaag is veel beter / eenvoudiger: de huidige Python 2.7 & 3.5 (eigenlijk de enige twee Python-platformversies waar mensen om geven) die nu in de openbare repos zijn, zijn erg stabiel, dus nu hoeven we ons eigenlijk alleen maar zorgen te maken over het installeren van de laatste Python modules, niet de laatste Python. Dus nu is het "nieuwste versieprobleem" van Python verhuisd gedeeltelijk uit de OS repos & apt en in PyPI & pip.)


24
2017-09-29 08:50



Volgens deze instructies op Ubuntu 16.04.1 heeft LTS met succes python 2.7 en pip zo opgezet: sudo apt-get install python2.7; sudo apt-get install python-pip; sudo -H python2 -m pip-installatie --upgrade pip; # Controleer versie: $ pip --version -> pip 9.0.1 van /usr/local/lib/python2.7/dist-packages (python 2.7); $ python --version -> Python 2.7.12 - Robert Lujo
Echt nuttig antwoord - heel erg bedankt! - Failed Scientist
Excuseer mijn onwetendheid, maar mag ik weten wat "hashed" betekent bij het tonen van Python-versies? - Failed Scientist
@TalhaIrfan Het is een goede vraag (en, als u een vereenvoudigd antwoord toestaat): wanneer een opdracht in bash wordt getypt (net als bij de meeste shells), kan de cmd een alias, functie of uitvoerbaar bestand zijn in de $PATH. De env var PATH is een lange lijst met mappen met letterlijk duizenden bestanden erin. Om sneller het uitvoerbare bestand te vinden, gebruikt de shell een hashtabel in de cache om snel op te zoeken. Het kan oud worden, dus "hashed" laat je weten dat het "herinnerd" is aan dit commando toegewezen aan dat uitvoerbare bestand unix.stackexchange.com/questions/5609/... - michael
@gaia wil je misschien een andere vraag stellen, omdat er meer nodig kan zijn om dit te achterhalen (of als er iets is veranderd sinds ik dit heb opgeschreven). Misschien eerst verifiëren beide  pip (2,7) & pip3 (3.x) waren volledig geïnstalleerd / opgewaardeerd, en niet alleen de eerste - d.w.z. sudo apt-get install python-pip python3-pip en sudo -H python2 -m pip install --upgrade pip en sudo -H python3 -m pip install --upgrade pip  ... Of als het echt een kwestie van toestemming is (aangegeven door "het werkt met sudo"), dan zal het een beetje moeilijker worden om het op te sporen. - michael


12.04

Als je volgt Achu's antwoord, dan is de term libread5-dev moet worden gewijzigd in libreadline-gplv2-dev. Dus het volledige commando zou zijn:

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

11
2017-07-26 14:37





Je kunt het ook downloaden en installeren via pyenv

#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

2
2018-03-30 07:38



Dit is de schoonste manier om een ​​echt actuele versie van Python op een oudere versie van Ubuntu te krijgen. Het omvat ook virtuele ondersteuning, via de pyenv-virtualenv plugin, waardoor het eenvoudig is om applicaties te installeren met verschillende modulevereisten zonder clashes. - RichVel
Twee waarschuwingen over pyenv: (1) het werkt alleen van een bash-shell (of misschien zsh, maar zeker geen streepje dat / bin / sh is op Ubuntu), en (2) het vereist een login-shell (bijv. bash --login), wat niet altijd gemakkelijk te bereiken is, b.v. van Ansible. Het beste voor interactief gebruik, minder goed voor scripting-servers. - RichVel