Como instalo o Python 3.3?

103

Eu baixei o Python 3.3 do site oficial, mas não faço idéia de como instalá-lo.

Estou usando o Ubuntu 12.04

enlouqueceu
fonte
Por que não consigo atualizar aplicativos sem atualizar todo o sistema operacional? explica por que não está disponível. Resumindo: outros pacotes contam com uma versão mais antiga (ainda mantida!). E mantenha seus pensamentos pessoais sobre como este site funciona para si mesmo ou publique-o na meta, onde você pode postar depois de ganhar pontos de reputação suficientes . Mas primeiro: Perguntas frequentes sobre como o site funciona.
precisa saber é

Respostas:

113

O Python 3.3 foi lançado em 29 de setembro de 2012, vários meses após o lançamento do Ubuntu 12.04. Está incluído no Ubuntu 12.10 embora como python3.3pacote

Se você deseja instalar o Python 3.3 na versão Ubuntu, que não o possui em seus repositórios, você tem as seguintes opções:

Use um PPA

Há um PPA contendo as versões Old e New Python mantidas por Felix Krull. Consulte a resposta do Luper Rouch para obter instruções de instalação.

Compilar Python a partir do código-fonte

Isso é muito fácil e permite que você tenha várias versões do Python sem mexer com o interpretador python do sistema (que é usado por muitos programas próprios do Ubuntu). Na minha máquina de desenvolvimento, tenho literalmente dezenas de versões diferentes do Python, do 2.4 ao 3.2, vivendo alegremente /opt.

precisamos do compilador C e outras coisas para compilar o Python

sudo apt-get install build-essential

As bibliotecas SQLite precisam ser instaladas para que o Python tenha suporte ao SQLite.

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

Faça o download e compile o 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

Alguns toques para instalar um pycomando, criando um link simbólico:

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

Como alternativa, você pode instalar um alias do bash chamado py:

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

E é isso. Agora você pode ter qualquer versão do Python, mesmo um alfa, ou, digamos, ter algumas cópias do Python 3.3 compiladas com configurações diferentes ... embora muitas pessoas não precisem disso :)

Use pyenv

Existe um software chamado pyenv que pode ajudá-lo a automatizar o procedimento - o que ele basicamente faz é compilar o Python a partir da fonte, instalando-o no diretório inicial. Seu objetivo é ajudá-lo a gerenciar várias versões do Python.

Sergey
fonte
1
Após a instalação, como alguém usaria essa instalação alternativa do Python? Digamos que eu tenha alguns .pyarquivos com a #!/usr/bin/env pythonlinha shebang (conjunto de bits executável), como eu os faria usar essa instalação /opt/python3.3sem modificar todos eles? Ou mesmo os instalados pelo sistema.
precisa saber é o seguinte
1
@gertvdijk: o ponto principal não é substituir o intérprete padrão - se você fizer isso, todos os aplicativos python executados em sua conta usarão o Python 3.3, incluindo aplicativos Ubuntu, como o Software Center ect. Nós não queremos isso. Para executar um script, basta usar py myscript.py(onde pyestá um link simbólico que criamos no final do exercício). Normalmente, também uso virtualenv ou buildout para meus projetos.
Sergey
1
@gertvdijk Você pode manter vários ambientes python gerenciados usando o virtualenv.
FLUP
@gertvdijk Você está ciente de que python 3.xe python 2.x são incompatíveis? Se você apontasse todos os seus scripts existentes para o python 3.3, eles provavelmente quebrariam. Simplesmente mostre seus novos scripts python como #! /opt/python3.3 e o interpretador correto será abordado quando você o executar.
Tony Martin
1
mkdir ~/bin ln -s /opt/python3.3/bin/python ~/bin/pynão funciona para mim. Eu achei que /opt/python3.3/bin/pythondeveria ser /opt/python3.3/bin/python3, mas ainda estou conseguindo py: command not found. Alguma sugestão.
43

Aqui está o que eu fiz para instalar o Python 3.3 no Ubuntu 12.04:

  1. Instale dependências:

    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. Download python 3.3.0:

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

    tar xvfz Python-3.3.0.tgz
  4. Configure e instale:

    cd Python-3.3.0
    ./configure --prefix=/opt/python3.3
    make  
    sudo make install
  5. Teste se funcionou:

    /opt/python3.3/bin/python3

Você deve ver algo semelhante:

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

Algumas coisas adicionais que são úteis ... você pode criar um ambiente virtual em sua casa e apenas ativar o Python 3.3 sob demanda.

  1. Crie um ambiente virtual em sua casa:

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

    source ~/py33/bin/activate
  3. Instale as ferramentas de distribuição:

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

    easy_install pip
  5. Instale os pacotes python que você deseja (por exemplo, bottle)

    pip install bottle

Desfrutar!

boleano
fonte
sudo apt-get build-dep python3.2? Você provavelmente esqueceu installentre :)
Stam Kaly
1
@StamKaly: não. build-depnão é um pacote, é um apt-get verbo (como install). Significa " instalar todos os pacotes necessários para construir o (s) pacote (s) de origem solicitado (s) "
MestreLion
35

O PPA deadsnakes possui pacotes para versões antigas e novas do 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
Luper Rouch
fonte
Sim, isso instalou algo certo, mas como eu o invoco? Digitar 'python' fornece o interpretador methe python 2 e digitar 'python3' sugere que ele não está instalado e pode ser instalado a partir de repositórios do ubuntu.
Kris
Ah..I ver o executável é chamado python3.3 (ou pythonX.Y, por qualquer versão do python instalado :-)
Kris
ppa: fkrull / deadsnakes está arquivado. Use ppa: deadsnakes / ppa.
Codefool
10

Ubuntu 14.04 e versões anteriores:

O Python2.7 é o padrão. Use o gerenciador de pacotes para instalar o python3 em cima do python comum no Ubuntu, o Ubuntu pode lidar com ambos 2.7 e 3.2 ao mesmo tempo sem um virtualenv:

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

Ubuntu 18.04:

O Python3 vem como padrão no sistema operacional e o Python2.7 não está disponível, a menos que você instale especificamente.

Três nomes de pacotes para escolher: python, python-minimal, python-all. O padrão é mínimo. Essas palavras são apenas sinalizadores para os repositórios do Ubuntu para incluir coisas extras ou não. Para ver exatamente o que os subpacotes são e não estão incluídos, faça uma busca detalhada nos subpacotes de: https://packages.ubuntu.com/bionic/python

sudo apt install python-minimal
python --version

Ou para tentar atualizar o python3:

sudo apt install python3-minimal
python --version

Para tentar forçar uma versão específica, você pode tentar passar um parâmetro de versão:

sudo apt-get install python 3.3.3
Eric Leschinski
fonte
1
Como você atualiza a versão python3 de 3.2.3 para 3.3.5?
anon58192932
2
O Python 3.3 está disponível apenas nos repositórios padrão no Ubuntu 12.10 e posterior. OP está usando 12.04
Lenna 14/04
Se você deseja que mais de 2 versões do python estejam disponíveis em um computador (além das versões 2.7 e 3.2 padrão escolhidas pelo sistema operacional), cada nova versão do python deve estar em seu próprio ambiente virtual ( virtualenv). Pesquisa no Google: "Use o virtualenv para isolar a versão do python". Se você não usa algum tipo de contêiner, se expõe a um labirinto de problemas, já que o python faz uma merda gigante em todo o seu computador, ocupando todos os cantos e recantos, e eles lutam entre si à moda de John Cleeseian.
Eric Leschinski
1

Eu escrevi um script para automatizar todo o download, compilação e instalação de versões Python que não são pacotes. O script instala a versão do Python em /optsegurança, longe do gerenciador de pacotes e das versões do sistema do Python.

Ele também busca as dependências também para a maioria das versões do Ubuntu. Ele deve funcionar em todas as versões atualmente suportadas do Ubuntu (10.04, 12.04, 12.10 e 13.04) e provavelmente em outras versões.

Incluí-o abaixo e também o publiquei no repositório do Github , que é o local principal.

O script deve ser copiado e salvo em um editor de texto como, por exemplo, build_pythone tornado executável ( chmod u+x build_python) e, em seguida, pode ser executado com dois parâmetros, em que o primeiro parâmetro sempre deve ser o ramo Python e o segundo parâmetro sempre deve ser o Versão Python.

Veja python.org para as listagens da versão que você deseja compilar.

Aqui estão alguns exemplos do uso do script:

  1. Para a versão estável, depois de verificar as listagens, ela pode ser executada como

    ./build_python '3.3.2' '3.3.2'
  2. Para a versão de desenvolvimento, onde os dois parâmetros são diferentes nas listagens, ele pode ser executado como:

    ./build_python '3.4.0' '3.4.0a1'

O corpo do script é reproduzido abaixo (nenhuma sintaxe é destacada aqui. Para isso, consulte minha página do 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}

fonte
1

Aviso : Pythonbrew foi preterido em favor de pyenv. Instruções atualizadas estão aqui

Além disso, você pode usar algo como pythonbrew :

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

É muito fácil de usar, e outro benefício, é possível instalar qualquer versão python necessária. Consulte os documentos para obter detalhes do modo

Alexey Savanovich
fonte
0

Aqui estão as etapas que eu segui:

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
Tarun
fonte