Como instalar o Python 3.6?

107

Gostaria de instalar o Python mais recente, que é 3.6 no momento deste post. No entanto, o repositório está dizendo que o Python 3.4.2 é a versão mais recente.

Eu tentei:

$ sudo apt-get update
$ sudo apt-get install python3

python3 is already the newest version.

$ python -V

Python 3.4.2

Para atualizar para o Python 3.6 na minha estação de trabalho Windows, simplesmente baixei um exe, cliquei em "Avançar" algumas vezes e está pronto. Qual é o procedimento apropriado e oficialmente aceito para instalar o Python 3.6 no Debian Jessie?

dvtan
fonte
6
Os repositórios Debian padrão contêm pacotes de software compilados especificamente para uma determinada versão do Debian. Exceto pelas atualizações de segurança (de preferência apenas o mínimo de alterações necessárias para corrigir uma falha de segurança), novas versões da maioria dos softwares podem não estar disponíveis até a próxima versão principal, para evitar instabilidade em potencial.
Phd
@phk Nesse caso, não seria prudente adotar um comportamento semelhante ao pip, ou seja, usar o padrão 3.4.2 quando uma versão não for especificada e permitir que o usuário solicite explicitamente 3.6 com uma flag? Apenas uma idéia :)
dvtan
1
Isso significaria que o pessoal do Debian teria que manter todas essas versões do Python para todas as versões suportadas do Debian. Claro, poderia ser automatizado, mas ainda seria muito. Além disso, os usuários avançados que desejam versões mais recentes também podem usar repositórios personalizados. Às vezes, os próprios autores do software os mantêm para o Debian e outras distribuições populares do Linux, por exemplo, no caso do Oracle VirtualBox .
Php
1
O Python 3.6 (embora rc1) acabou de chegar no experimental Debian. Provavelmente é possível fazer o backport para Jessie, possivelmente com alguns ajustes.
Faheem Mitha
Atualizar. Isso terminou com êxito a construção para mim no Debian stable (jessie). No entanto, isso não significa que ele será instalado com sucesso e não causará problemas. Um próximo passo razoável seria testá-lo em uma VM de teste estável. Alguém se importa?
Faheem Mitha

Respostas:

66

Nota editorial:
Por favor, leia os comentários a esta resposta.


O Debian não possui o Python 3.6 em seus repositórios, mas o teste possui.

$ sudo nano /etc/apt/sources.list
# add
deb http://ftp.de.debian.org/debian testing main
$ echo 'APT::Default-Release "stable";' | sudo tee -a /etc/apt/apt.conf.d/00local
$ sudo apt-get update
$ sudo apt-get -t testing install python3.6
$ python3.6 -V

Você perguntou por:

o procedimento adequado e oficialmente aceito

mas devo ressaltar que essa não é uma solução oficial porque usa repositórios de teste.

Егор Гвоздиков
fonte
62
Aviso: isso atualizará seu sistema para um híbrido de qualquer versão do debian que você esteja executando agora (provavelmente 'estável') mais 'instável' mais 'experimental'. Isso será muito pior do que apenas fazer o dist-upgrade para instável e selecionar alguns pacotes do experimental, ou (melhor ainda, permanecer com o stable e o cherry-picking nos backports e / ou instável e / ou experimental). A reversão disso será quase impossível. Não é recomendado a menos que você tem um monte de experiência com debian e embalagem debian
cas
8
resposta editada para definir a versão padrão do apt como estável. e removeu a louca 'apt-get upgrade' (que atualiza tudo para as versões mais recentes disponíveis em instável ou experimental, exceto por qualquer coisa que possa causar a remoção de outro pacote). Isso deve tornar esse procedimento muito menos perigoso, mas ainda não seguro. E ainda não é recomendado para iniciantes. 'experimental' não é para uso casual, é para coisas estranhas, não testadas e possivelmente quebradas que podem entrar em conflito ou quebrar coisas mesmo em 'instáveis'. Também é usado como uma área de preparação para grandes atualizações de vários pacotes.
cas
1
A resposta editada como python 3.6.2 está (agora) no testingrepositório, o que é mais seguro para o usuário médio.
M4p85r
4
Não tente fazer isso - você levará anos para desfazer
#
2
A partir de 15/09/2018, ainda é arriscado: tentei isso em um Raspberry Pi com extensão Debian e encontrei falhas de segmentação após a atualização do Python 3.6 dos testes, que trouxeram uma libc6 e libc6-dev atualizadas.
Drott
154

Você pode instalar Python-3.6no Debian 8 da seguinte maneira:

wget https://www.python.org/ftp/python/3.6.9/Python-3.6.9.tgz
tar xvf Python-3.6.9.tgz
cd Python-3.6.9
./configure --enable-optimizations --enable-shared
make -j8
sudo make altinstall
python3.6

É recomendável usar de make altinstallacordo com o site oficial .

Se você quiser pipser incluído, precisará adicionar --with-ensurepip=installà sua chamada de configuração. Para mais detalhes veja ./configure --help.

Aviso: make installpode substituir ou mascarar o binário python. make altinstallé, portanto, recomendado em vez de, make installpois ele é instalado apenas exec_prefix/bin/pythonversion.

Alguns pacotes precisam ser instalados para evitar alguns problemas conhecidos, consulte: Problemas comuns de compilação (atualizados)

Ubuntu / Debian:

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev

Alternativa do libreadline-dev:

sudo apt install libedit-dev

Fedora / CentOS / RHEL (aws ec2):

sudo yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel \
openssl-devel xz xz-devel libffi-devel

Alternativa do openssl-devel:

sudo yum install compat-openssl10-devel --allowerasing

Atualizar

Você pode baixar a última python-x.y.z.tar.gza partir de aqui .

Para definir uma versão python padrão e alternar facilmente entre eles, é necessário atualizar o seu update-alternativescom a versão python múltipla.

Digamos que você tenha instalado o python3.7on debian stretch, use o comando whereis pythonpara localizar o binário ( */bin/python). por exemplo:

/usr/local/bin/python3.7
/usr/bin/python2.7
/usr/bin/python3.5

Adicione as versões python:

update-alternatives --install /usr/bin/python python /usr/local/bin/python3.7 50
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 40
update-alternatives --install /usr/bin/python python /usr/bin/python3.5 30

O python3.7com 50prioridade agora é o python padrão, o que python -Vserá impresso:

Python 3.7.0b2

Para alternar entre eles, use:

update-alternatives --config python

Saída de amostra:

There are 3 choices for the alternative python (providing /usr/bin/python).

  Selection    Path                      Priority   Status
------------------------------------------------------------
* 0            /usr/local/bin/python3.7   50        auto mode
  1            /usr/bin/python2.7         40        manual mode
  2            /usr/bin/python3.5         30        manual mode
  3            /usr/local/bin/python3.7   50        manual mode

Press <enter> to keep the current choice[*], or type selection number: 
GAD3R
fonte
5
Os caras do debian não recomendam checkinstall? Caso contrário, seria aconselhável instalá-lo em /usr/localou /opt.
Ivan Anishchuk
3
De acordo com o ./configure --helpPython 3.6, ele é instalado /usr/localpor padrão.
Markus Strauss
2
Está tendo problemas com esta resposta (por exemplo, o módulo SSL não está disponível ou o zlib está ausente)? Veja: stackoverflow.com/a/41601137/972128
kkurian
11
Isenção de responsabilidade: leva mais de 20 horas em um dispositivo de baixa potência, como o Pi zero.
Antoine Lizée
2
versão já 3.7está disponível
Timo
32

A recomendação oficial é "você realmente não precisa de software mais recente"

Não sofra da síndrome de coisas novas e brilhantes - DontBreakDebian | Wiki Debian

A maioria dos conselhos nessa página é voltada para o que fazer se você quiser que o software esteja disponível em todo o sistema, mas não acho que seja necessário nesse caso.

Se você buscar as fontes python, construa o interpretador 3.6 usando --prefixpara controlar onde termina e, em seguida, use virtualenvcom a --pythonopção, então você pode usar o python 3.6 sem afetar nada fora do seu projeto.

O processo pode ser algo como isto:

$ cd ~
$ mkdir pythonroot
$ mkdir opt
$ mkdir app
$ cd opt
$ wget <python tarball>
$ tar -xvf <python tarball>
$ cd python-3.6
$ ./configure --prefix="$HOME"/pythonroot
$ make
$ make install
$ cd ~
$ cd app
$ virtualenv venv --python ~/pythonroot/bin/python
$ . venv/bin/activate
[venv]$ which python
/home/<user>/pythonroot/bin/python

Se você fizer isso, considere a --enable-optimizationssinalização no configurescript Python , que parece ativar alguns recursos, como a otimização guiada por perfil. Aumenta o tempo de construção, mas parece resultar em um intérprete mais rápido em 10% ou mais, de acordo com alguns parâmetros de referência.

Gregory Nisbet
fonte
5
Isto segue a regra geral do Python de "Praticidade supera pureza". Costumo instalar pythons a partir de pacotes de origem em / opt / python-xyz e depois executar aplicativos a partir de seus próprios virtualenvs.
Zgoda
1
Nota importante: se você está indo fazer algo como isto: se certificar de que qualquer usuário que o seu processo de Python é executado como não pode modificar o virtualenv
Gregory Nisbet
1
Na minha opinião, esta é a melhor resposta.
ReadBackCommodore64
Obrigado por este conselho. No passado, eu quebrei algumas instalações do debian com o addon para todo o sistema.
congelado
Na minha instalação [venv]$ which pythonnão me dê /home/<user>/pythonroot/bin/python, mas em /home/<user>/app/venv/bin/python3vez disso… por quê?
congelado
12

Você pode dar uma olhada em pyenv: https://github.com/yyuu/pyenv . Para citar o pyenvtutorial no Amaral Lab:

Anteriormente conhecido como Pythonbrew, o pyenv permite alterar a versão global do Python, instalar várias versões do Python, definir versões específicas do diretório (projeto) do Python e sim criar / gerenciar ambientes virtuais do python ("virtualenvs"). Tudo isso é feito em máquinas no estilo * NIX (Linux e OS X) sem depender do próprio Python e funciona no nível do usuário - sem necessidade de nenhum comando sudo.

Schaiba
fonte
3
Embora esse link possa responder à pergunta, é melhor incluir aqui as partes essenciais da resposta e fornecer o link para referência. As respostas somente para links podem se tornar inválidas se a página vinculada for alterada. - Do comentário
Archemar
Você está certo, vai mudar a resposta.
schaiba
1
Eu acho que ele pretendia incluir também as linhas de comando essenciais também ...
not2qubit 24/03
Isso funciona bem, exceto quando você está lidando com dispositivos incorporados. Para "instalar" uma versão do python, a fonte é baixada e compilada localmente. Fora isso, o pyenv é uma ótima opção e tem muita flexibilidade, incluindo a execução de diferentes versões do python em diretórios diferentes e a solução dos problemas muito irritantes do PIP.
Brian Bulkowski
11

Minha maneira preferida é usar o Anaconda ou o Miniconda para manter a versão mais recente do python e pacotes instalados no Debian.

Tudo é mantido em uma pasta, o que facilita a remoção mais tarde, se você desejar. O instalador também adiciona o caminho ao seu bashrc (adicione você mesmo se usar outro shell).

Ele vem com o pip e também o conda, que é outro gerenciador de pacotes que pode ser bom para pacakges mais complexos como o numpy. O Miniconda é uma instalação simples e o Anaconda é uma instalação completa com muitos pacotes, projetados principalmente para análise de dados.

Rapidamente:

wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh

Leia e aceite a licença, se você não estiver usando o bash add path: export PATH="/home/$USER/miniconda3/bin:$PATH"

Teste:

$ python --version
Python 3.6.0 :: Continuum Analytics, Inc.

Instale a partir do PyPi:

# pip install fava

Instale a partir do conda:

# conda install numpy

Quando você quiser excluí-lo, remova a pasta ~/miniconda3e o caminho no seu bashrc.

alexjj
fonte
Após infinitos problemas com a instalação do python da fonte, esta versão funcionou perfeitamente! Observe que se você deseja trabalhar com virtualenv (wrapper) para o gerenciamento de ambiente, é necessário adicionar o diretório de biblioteca da miniconda LD_LIBRARY_PATH. Por exemplo: adicione export $LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/miniconda3/lib"ao seu .bashrc.
jrast
"O instalador também adiciona o caminho ao seu bashrc" Essa é a principal razão pela qual eu não uso o anaconda. Mascarar silenciosamente um ambiente python existente não é saudável, para dizer o mínimo.
MisterMiyagi
3

O Debian não possui o Python 3.6 em seus repositórios. Aqui está um instantâneo do status atual do Python3:

wheezy (oldstable) (python): interactive high-level object-oriented language (default python3 version)
    3.2.3-6: all
jessie (stable) (python): interactive high-level object-oriented language (default python3 version)
    3.4.2-2: amd64 arm64 armel armhf i386 mips mipsel powerpc ppc64el s390x
stretch (testing) (python): interactive high-level object-oriented language (default python3 version)
    3.5.1-4: amd64 arm64 armel armhf i386 mips mips64el mipsel ppc64el s390x
sid (unstable) (python): interactive high-level object-oriented language (default python3 version)
    3.5.1-4: alpha amd64 arm64 armel armhf hppa hurd-i386 i386 kfreebsd-amd64 kfreebsd-i386 m68k mips mips64el mipsel powerpc powerpcspe ppc64 ppc64el s390x sh4 sparc64 x32

Você pode conferir isso aqui .

Você pode instalar o 3.6 a partir da fonte ou usar algo como Linuxbrew para uma instalação do diretório inicial.

Dennis Chen
fonte
3

Com isso

sudo echo "http://ftp.fr.debian.org/debian testing main" >> /etc/apt/sources.list

sudo apt-get update
sudo apt-get install -y python3.6

Trabalhe com sucesso.

Mais: defina python3.6 como padrão

sudo alias python=/usr/bin/python3.6

Agora mesmo :

python --version
Python 3.6
Sean S
fonte
Deve lersudo echo "deb http://ftp.fr.debian.org/debian testing main" >> /etc/apt/sources.list
declinação 28/09
3
Essa resposta é a mesma que a resposta aceita, veio um ano depois e ainda falha ao fornecer comandos corretos.
Para 마 SE
1

O Python 3.6 (embora rc1) acabou de chegar no experimental Debian. Consegui compilar isso com sucesso no Debian stable (jessie). Veja as etapas finais da compilação coladas abaixo.

No entanto, isso não significa que ele será instalado com sucesso e não causará problemas. Um próximo passo razoável seria testá-lo em uma VM de teste estável. Se alguém se importa, eu posso tentar - ou alguém pode tentar.

Uma versão de lançamento adequada deve chegar ao Debian instável em breve.

dh_builddeb -a
dpkg-deb: building package `python3.6' in `../python3.6_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-venv' in `../python3.6-venv_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-stdlib' in `../libpython3.6-stdlib_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-minimal' in `../python3.6-minimal_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-minimal' in `../libpython3.6-minimal_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6' in `../libpython3.6_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-dev' in `../python3.6-dev_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-dev' in `../libpython3.6-dev_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `python3.6-dbg' in `../python3.6-dbg_3.6.0~rc1-1_amd64.deb'.
dpkg-deb: building package `libpython3.6-dbg' in `../libpython3.6-dbg_3.6.0~rc1-1_amd64.deb'.
 dpkg-genchanges  >../python3.6_3.6.0~rc1-1_amd64.changes
dpkg-genchanges: including full source code in upload
 dpkg-source --after-build python3.6-3.6.0~rc1
dpkg-buildpackage: full upload (original source is included)
Now running lintian...
W: python3.6 source: newer-standards-version 3.9.8 (current is 3.9.6)
N: 56 tags overridden (26 errors, 27 warnings, 3 info)
Finished running lintian.
Faheem Mitha
fonte
0

A partir de setembro de 2019, o último debian stable (buster) possui o python 3.7. Portanto, o procedimento apropriado e oficialmente aceito agora seria atualizar para o debian buster .

TamaMcGlinn
fonte