Come installo Python 3.3?


103

Ho scaricato Python 3.3 dal sito ufficiale ma non ho idea di come installarlo.

Sto usando Ubuntu 12.04


Perché non riesco ad aggiornare le applicazioni senza aggiornare l'intero sistema operativo? spiega perché non è disponibile. In breve: altri pacchetti si basano su una versione precedente (ancora mantenuta!). E ti preghiamo di mantenere le tue opinioni personali su come funziona questo sito per te stesso o pubblicarlo su meta dove puoi pubblicare una volta che hai guadagnato abbastanza punti reputazione . Ma prima: FAQ su come funziona il sito.
Gertvdijk,

Risposte:


113

Python 3.3 è stato rilasciato il 29 settembre 2012, diversi mesi dopo il rilascio di Ubuntu 12.04. È incluso in Ubuntu 12.10 anche se come python3.3pacchetto

Se vuoi installare Python 3.3 sulla versione di Ubuntu che non lo ha nei suoi repository, hai le seguenti opzioni:

Usa un PPA

C'è un PPA contenente le versioni Old e New Python gestite da Felix Krull. Vedere la risposta di Luper Rouch per le istruzioni di installazione.

Compilare Python dalla fonte

Questo è molto semplice e ti permette di avere più versioni di Python senza fare confusione con l'interprete di sistema Python (che viene utilizzato da molti programmi di Ubuntu). Sulla mia macchina di sviluppo ho letteralmente dozzine di diverse versioni di Python dalla 2.4 alla 3.2 che vivono felicemente /opt.

abbiamo bisogno del compilatore C e di altre cose per compilare Python

sudo apt-get install build-essential

Le librerie SQLite devono essere installate affinché Python abbia il supporto SQLite.

sudo apt-get install libsqlite3-dev
sudo apt-get install sqlite3 # for the command-line client
sudo apt-get install bzip2 libbz2-dev

Scarica e compila Python:

wget http://www.python.org/ftp/python/3.3.5/Python-3.3.5.tar.xz
tar xJf ./Python-3.3.5.tar.xz
cd ./Python-3.3.5
./configure --prefix=/opt/python3.3
make && sudo make install

Alcuni tocchi per installare un pycomando creando un link simbolico:

mkdir ~/bin
ln -s /opt/python3.3/bin/python3.3 ~/bin/py

In alternativa, puoi installare un alias bash chiamato pyinvece:

echo 'alias py="/opt/python3.3/bin/python3.3"' >> .bashrc

E questo è tutto. Ora puoi avere qualsiasi versione di Python, anche un alpha, o, diciamo, avere alcune copie di Python 3.3 compilate con impostazioni diverse ... non che molte persone ne abbiano bisogno però :)

Usa pyenv

C'è un software chiamato pyenv che può aiutarti ad automatizzare la procedura - ciò che essenzialmente fa è compilare Python dal sorgente, installandolo nella tua home directory. Il suo obiettivo è aiutarti a gestire più versioni di Python.


1
Dopo l'installazione, come si usa questa installazione Python alternativa? Supponiamo di avere alcuni .pyfile con la #!/usr/bin/env pythonriga shebang (set di bit eseguibili), come li farei per utilizzare questa installazione /opt/python3.3senza modificarli tutti? O anche quelli installati dal sistema.
Gertvdijk,

1
@gertvdijk: il punto centrale non è sostituire l'interprete predefinito - se lo fai, allora ogni app Python eseguita dal tuo account utilizzerà Python 3.3, comprese le app Ubuntu, come Software Center ect. Non lo vogliamo. Per eseguire uno script, basta usare py myscript.py(dove pyè un link simbolico che abbiamo creato alla fine dell'esercizio). Normalmente uso anche virtualenv o buildout per i miei progetti.
Sergey,

1
@gertvdijk È possibile mantenere gestibili più ambienti Python usando virtualenv.
flup

@gertvdijk Sei consapevole che python 3.xe python 2.x sono incompatibili? Se dovessi puntare tutti i tuoi script esistenti su Python 3.3 probabilmente si spezzerebbero. Trasforma semplicemente i tuoi nuovi script Python come #! /opt/python3.3 e l'interprete corretto verranno indirizzati quando lo esegui.
Tony Martin,

1
mkdir ~/bin ln -s /opt/python3.3/bin/python ~/bin/pynon funziona per me. Ho scoperto che /opt/python3.3/bin/pythondovrebbe essere /opt/python3.3/bin/python3, ma ancora ottenendo py: command not found. Eventuali suggerimenti.

43

Ecco cosa ho fatto per installare Python 3.3 su Ubuntu 12.04:

  1. Installa dipendenze:

    sudo apt-get build-dep python3.2
    sudo apt-get install libreadline-dev libncurses5-dev libssl1.0.0 tk8.5-dev zlib1g-dev liblzma-dev
    
  2. Scarica Python 3.3.0:

    wget http://python.org/ftp/python/3.3.0/Python-3.3.0.tgz
  3. Estratto:

    tar xvfz Python-3.3.0.tgz
  4. Configura e installa:

    cd Python-3.3.0
    ./configure --prefix=/opt/python3.3
    make  
    sudo make install
    
  5. Verifica se ha funzionato:

    /opt/python3.3/bin/python3

Dovresti vedere qualcosa di simile:

Python 3.3.0 (default, Jan 31 2013, 18:37:42) 
[GCC 4.6.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Alcune cose aggiuntive che sono utili ... puoi creare un ambiente virtuale nella tua casa e attivare Python 3.3 su richiesta ..

  1. Crea un ambiente virtuale a casa tua:

    /opt/python3.3/bin/pyvenv ~/py33
  2. Attiva virtualenv:

    source ~/py33/bin/activate
  3. Installa strumenti di distribuzione:

    wget http://python-distribute.org/distribute_setup.py
    python distribute_setup.py
    
  4. Installa pip:

    easy_install pip
  5. Installa tutti i pacchetti python che desideri (ad es. Bottiglia)

    pip install bottle

Godere!


sudo apt-get build-dep python3.2? Probabilmente ti sei dimenticato installtra :)
Stam Kaly,

1
@StamKaly: no. build-depnon è un pacchetto, è un apt-get verbo (come install). Significa " installa tutti i pacchetti necessari per
compilare i

35

Il deadsnakes PPA ha pacchetti per le vecchie e nuove versioni di Python:

sudo apt-get install python-software-properties
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.3

Sì, ha installato qualcosa di buono, ma come posso invocarlo? Digitando 'python' si ottiene l'interprete di python 2 e digitando 'python3' si suggerisce che non è installato e può essere installato da repository ubuntu.
Kris,

Ah..Vedo che l'eseguibile si chiama python3.3 (o pythonX.Y, per qualsiasi versione di python installata :-)
kris,

ppa: fkrull / deadsnakes è archiviato. Usa invece ppa: deadsnakes / ppa.
codefool

10

Ubuntu 14.04 e precedenti:

Python2.7 arriva di default, usa il gestore pacchetti per installare python3 sopra il normale python su Ubuntu, Ubuntu può gestire contemporaneamente sia 2.7 che 3.2 senza virtualenv:

sudo apt-get install python3
python3 --version
Python 3.2.3
python --version
Python 2.2.3

Ubuntu 18.04:

Python3 viene fornito di default con il sistema operativo e Python2.7 non è disponibile se non si installa specificamente.

Tre nomi dei pacchetti tra cui scegliere: python, python-minimal, python-all. L'impostazione predefinita è minima. Queste parole sono solo dei flag nei repository Ubuntu per includere o meno cose extra. Per vedere esattamente cosa sono e non sono inclusi i pacchetti secondari, eseguire il drill down sui pacchetti secondari di: https://packages.ubuntu.com/bionic/python

sudo apt install python-minimal
python --version

O per provare ad aggiornare python3:

sudo apt install python3-minimal
python --version

Per provare a forzare una versione specifica, puoi provare a passare un parametro versione:

sudo apt-get install python 3.3.3

1
Come si aggiorna la versione di python3 dalla 3.2.3 alla 3.3.5?
anon58192932

2
Python 3.3 è disponibile solo dai repository predefiniti in Ubuntu 12.10 e versioni successive. OP utilizza 12.04
Lenna il

Se desideri più di 2 versioni di Python disponibili su un computer (diverse dalle 2.7 e 3.2 predefinite che il tuo sistema operativo sceglie per te), ogni nuova versione di Python dovrebbe trovarsi nel suo ambiente virtuale ( virtualenv). Ricerca Google: "Usa virtualenv per isolare la versione di Python". Se non usi un qualche tipo di contenitore, ti esponi a un labirinto di problemi poiché Python prende una merda gigante su tutto il computer, occupando ogni angolo, e si combattono a vicenda alla maniera di John Cleeseian.
Eric Leschinski l'


1

Ho scritto uno script per automatizzare tutto il download, la compilazione e l'installazione di versioni Python senza pacchetto. Lo script installa la versione di Python in /optmodo sicuro lontano dal gestore dei pacchetti e dalle versioni di sistema di Python.

Recupera anche le dipendenze anche per la maggior parte delle versioni di Ubuntu. Dovrebbe funzionare su tutte le versioni di Ubuntu attualmente supportate (10.04, 12.04, 12.10 e 13.04) e probabilmente su altre versioni.

Lo includo di seguito e l'ho pubblicato anche nel mio repository Github , che è la posizione principale.

Lo script deve essere copiato e salvato in un editor di testo come, ad esempio, build_pythone reso eseguibile ( chmod u+x build_python) e quindi può essere eseguito con due parametri, in cui il primo parametro deve sempre essere il ramo Python e il secondo parametro deve essere sempre il Versione Python.

Vedi python.org per gli elenchi della versione che desideri compilare.

Ecco un paio di esempi sull'uso dello script:

  1. Per il rilascio stabile, dopo aver verificato gli elenchi, può essere eseguito come

    ./build_python '3.3.2' '3.3.2'
  2. Per la versione di sviluppo, in cui i due parametri sono diversi negli elenchi, può essere eseguito come:

    ./build_python '3.4.0' '3.4.0a1'

Il corpo dello script è riprodotto di seguito (nessuna evidenziazione della sintassi qui. Per questo, vedi la mia pagina Github :

#!/usr/bin/env bash

# by mik, aka Exactus29, https://github.com/Exactus29
# 
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.

##########

# a script to compile the latest stable version of Python and place in /opt

(( $# == 2 )) || { printf "Please provide a version branch (e.g. 3.4.0) and a version release (e.g. 3.4.0a1) in that order.\n"
                   printf "The official site is python.org, see the ftp server at: http://python.org/ftp/python.\n" >&2 ; exit 1; }

# a splew of variables, so that just the version number can be given on the cmd line
# and then then the script can do the rest, including verifying the packages using gpg

# need different branch and version as sometimes the two are different, particularly for dev releases
py_branch="$1"
py_version="$2"
shift 2

# check if install target already exists in /opt, and exit so user can decide what to do
if [[ -d /opt/python-${py_version} ]]; then 
    printf "Target directory for the build already exists, please rename or remove.\n" >&2
    exit 1
else 
    :
fi

# use tar.bz2 as that is what most of the older releases used, i.e. in case user tries to build an older release
py_url="http://python.org/ftp/python/${py_branch}/Python-${py_version}.tar.bz2"
py_asc="http://python.org/ftp/python/${py_branch}/Python-${py_version}.tar.bz2.asc"
py_dir="$HOME/src/python_build" # checked to exist later, etc

# first check if user requested file exists on server
wget --spider ${py_url} >/dev/null 2>&1
(( $? > 0 )) && printf "No such version, version ${py_version} does not exist\n" >&2 && exit 1


# now very important before we do anything else, to check if asc file exists, as it  doesn't for some downloads
# if we don't check and it doesn't exist it causes the script to exit

wget --spider ${py_asc} >/dev/null 2>&1
# set a flag re whether asc file exists, so can check later and avoid problems
(( $? > 0 )) && no_asc=1 || no_asc=0

# set up more variables
py_tarbz2="${py_url##*/}"
(( no_asc == 0 )) && py_tarbz2_asc="${py_asc##*/}" # only set this if there is an asc file
py_folder="${py_tarbz2%.*.*}"
py_gpg_key="" 

# check other build dependencies are installed, beyond build-dep, sqlite support, readline, ncurses, build-essential 
dependencies_check() {

    local installed=()
    local to_be_installed=()
    local dependencies_list=(build-essential wget libreadline-dev libncurses5-dev libssl1.0.0 tk8.5-dev zlib1g-dev liblzma-dev
libsqlite3-dev sqlite3 bzip2 libbz2-dev)    

    for package in "${dependencies_list[@]}"; do 
        if grep -iq '^ii' < <(dpkg -l "$package"); then
            installed+=("$package")
        else 
            to_be_installed+=("$package")
        fi
    done 2>/dev/null

    if (( ${#to_be_installed[@]} > 0 )); then
        printf "If you have recently elevated your privileges with sudo, you will not see a " 
        printf "prompt here, before the apt-get update and install of packages occurs.\n" 
        sleep 2
        sudo -p "We need to install some dependencies, please enter your password: " apt-get update && sudo apt-get -y install "${to_be_installed[@]}"
        return 0
    else 
        printf "\nNothing to install, proceeding.\n"
        return 0
    fi

}

# tailor build-dep to new python version we want to build, basically either 2x or 3x versions
# should work with at least lucid/precise/quantal/raring/saucy, the currently supported versions
if (( ${py_branch:0:1} == 3 )) && grep -iq 'precise' /etc/lsb-release 2>/dev/null; then
    sudo -p "Please provide your password to install dependencies: " apt-get build-dep python3.2 && dependencies_check
elif (( ${py_branch:0:1} == 3 )) && grep -Eiq '(raring|quantal|saucy)' /etc/lsb-release 2>/dev/null; then
    sudo -p "Please provide your password to install dependencies: " apt-get build-dep python3.3 && dependencies_check
elif [[ ${py_branch:0:3} == 2.7 ]] && grep -iq 'lucid' /etc/lsb-release 2>/dev/null; then
    sudo -p "Please provide your password to install dependencies: " apt-get build-dep python2.6 && dependencies_check
elif [[ ${py_branch:0:3} == 2.7 ]]; then
    sudo -p "Please provide your password to install dependencies: " apt-get build-dep python2.7 && dependencies_check
else
    printf "\nProceeding, but make sure you have the correct build deps installed.\n\n"
    sleep 2        
fi

# dir checks
if [[ -d $HOME/src ]]; then 
    cd $HOME/src || exit 1
else
    mkdir $HOME/src && cd $HOME/src
fi

if [[ -d ${py_dir} ]]; then
    mv "${py_dir}" "${py_dir}_old_$(date '+%F_%H_%M_%S')"
    mkdir "${py_dir##*/}" && cd "${py_dir##*/}"
else
    mkdir "${py_dir##*/}" && cd "${py_dir##*/}"
fi

# finally, download python 
printf "\nNow downloading version ${py_version} from branch ${py_branch} ....."
wget "${py_url}" -P "${py_dir}" >/dev/null 2>&1
(( $? == 0 )) && printf "Done.\n"
# only download asc if it exists, set flag earlier
(( no_asc == 0 )) && wget "${py_asc}" -P "${py_dir}" >/dev/null 2>&1

# gpg tests

gpg_test() {
    # if error returned, extract gpg key from error message
    py_gpg_key="$(gpg --verify "${py_tarbz2_asc}" "${py_tarbz2}" 2>&1 | awk '{ print $NF }' | grep -v found)"

    # now check with gpg_key (should be Python release signing key)
    printf "\nReceiving keys.. "
    gpg --recv-keys "${py_gpg_key}" >/dev/null 2>&1
    (( $? > 0)) && printf "Key could not be received\n" || printf "Done.\n"

    printf "\nVerifying download... "
    gpg --verify "${py_tarbz2_asc}" "${py_tarbz2}" >/dev/null 2>&1
    (( $? > 0 )) && printf "The download could not be verified.\n" || printf "Done.\n"

}

if (( no_asc == 0 )); then
    gpg --verify "${py_tarbz2_asc}" "${py_tarbz2}" >/dev/null 2>&1
    if (( $? > 0 )); then 
        gpg_test 
    else
        printf "\nDownload verified\n\n"
    fi
else
    printf "\nProceeding even though asc file is not available for gpg to verify download\n\n"
    sleep 1
fi

# unpack and cd to the python folder
printf "Unpacking archive...."
tar xvjf "${py_folder}.tar.bz2" >/dev/null 2>&1
(( $? == 0 )) && printf "Done.\n" || { printf "Problems occured when unpacking, exiting\n" >&2; exit 1; }
cd "${py_folder}" || exit 1

# tailor the build to your machine here with configure and make

printf "\nNow for the configure (default prefix is /opt/python-${py_version})...."
sleep 2
./configure --prefix=/opt/python-${py_version} >/dev/null 2>&1
# as configure and make will exit anyway on error, no need to add || alternatives to the tests below
(( $? == 0 )) && printf "Done.\n\n"  
sleep 1

printf "\nNow for the compile. (If necessary, please add your own specifications to the make command line and run the script again)\n"
printf "\nPlease wait for the compile to finish: it may take a while...."
make >/dev/null 2>&1
(( $? == 0 )) && printf "Done.\n\n"

printf "\nWe are installing with make install into /opt, instead of using checkinstall.\n"
sudo make install >/dev/null 2>&1
installcode=$?
(( $installcode == 0 )) && printf "\n${py_version} succesfully installed in /opt/python-${py_version}\n\n"

if [[ -d $HOME/bin ]]; then
    ln -s /opt/python-${py_version}/bin/python${py_version:0:3} ~/bin/py-${py_version}
    (( $? == 0 )) && printf "\nSymlink created, run py-${py_version} in the terminal to launch the interpreter\n"
else
    mkdir $HOME/bin && ln -s /opt/python-${py_version}/bin/python${py_version:0:3} ~/bin/py-${py_version}
    (( $? == 0 )) && printf "\nSymlink created, run py-${py_version} in the terminal to launch the interpreter\n"
    printf "\nHowever, you will not be able to call py-${py_version} until you have logged out and in again, as bin will not"
    printf " have been added to your path just as $HOME/bin is created.\nn"
fi

# important info re setting up pyvenv re distribute tools and pip etc
cat <<extra_info

            See also a program called pyvenv with your installation in /opt, 
            with which you can create a virtual environment and use tools
            such as pip, etc. See the official documentation at:
            http://docs.python.org/3.3/using/scripts.html#pyvenv-creating-virtual-environments

extra_info

sleep 2 
exit ${installcode}

1

Avvertenza : Pythonbrew è stato deprecato a favore di pyenv. Le istruzioni aggiornate sono qui

Inoltre puoi usare qualcosa come pythonbrew :

curl -kL http://xrl.us/pythonbrewinstall | bash    
echo "[[ -s $HOME/.pythonbrew/etc/bashrc ]] && source $HOME/.pythonbrew/etc/bashrc" >> ~/.bashrc    
pythonbrew install 3.3

È abbastanza facile da usare, e un altro vantaggio, che è possibile installare qualsiasi versione di Python di cui hai bisogno. Consulta i loro documenti per i dettagli sulla modalità


0

Ecco i passaggi che ho seguito:

wget http://python.org/ftp/python/3.3.2/Python-3.3.2.tar.bz2
tar -xvjf ./Python-3.3.2.tar.bz2
cd ./Python-3.3.2
./configure --prefix=/opt/python3.3
make && make install
mkdir ~/bin
ln -s /opt/python3.3/bin/python ~/bin/py
echo 'alias py="/opt/python3.3/bin/python3"' >> .bashrc
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.