Qual é a maneira correta de gerenciar várias versões do python?

17

Eu tenho uma máquina com o Python 2.6 instalado como o Python padrão. Então, instalei o Python 2.7 e criei manualmente / usr / bin / python como um link simbólico para a nova instalação.

Em seguida, eu estava encontrando problemas com o comando não encontrado . Estou tentando reinstalá-lo:

sudo apt-get remove command-not-found

e eu recebo este erro:

/usr/bin/python does not match the
python default version. It must be
reset to point to python2.6

Mas eu realmente quero que o Python 2.7 seja o padrão. Como faço para consertar essa bagunça?

    
por ripper234 20.03.2011 / 09:02

4 respostas

13

Mudar o padrão Python (ou Perl, etc) em um sistema operacional é uma má idéia realmente . Este interpretador é, na verdade, parte do sistema operacional e pode haver outros componentes do sistema operacional escritos especificamente para trabalhar com essa versão do interpretador.

Por exemplo, no Redhat, a ferramenta yum que realiza atualizações de software do sistema é um aplicativo python. Você realmente não quer quebrar isso. Tais aplicativos podem depender de módulos python específicos, talvez não padrão, que estão sendo instalados e cuja versão instalada pode não ter. Por exemplo, no Ubuntu, acredito que algumas das ferramentas internas do sistema operacional escritas em Python usam um ORM chamado Storm que não faz parte da biblioteca padrão do Python. Sua instalação limpa do Python 2.7 tem a versão específica esperada do módulo Storm instalada? Tem alguma versão do Storm? Não? Então você acabou de quebrar um pedaço do seu SO.

A maneira correta de fazer isso é instalar sua versão preferida do python e configurar sua conta de usuário para usá-la configurando seu caminho .bash_profile, e assim por diante. Você também pode querer olhar para o módulo virtualenv para Python.

    
por 03.07.2012 / 11:20
8

How do I fix this mess?

Nada mais do que reinstalar python . Isso desfará sua alteração (o link simbólico).

Por que você quer isso como padrão? Sempre que precisar, use python2.7 ou inclua #!/usr/bin/python2.7 (o shebang) no início de seus scripts (executáveis).

Se você insistir em ter python2.7 como padrão em todo o sistema, use uma versão posterior do Ubuntu (atualmente é o Ubuntu 11.04, codinome Natty). Ele usa essa versão como padrão.

No futuro, evite fazer intervenções manuais como o que você fez com a coisa do symlink. Isso é especialmente verdadeiro para arquivos gerenciados por distro e, mais especialmente, para animais complexos como instalações em Python.

    
por 20.03.2011 / 09:13
1

Colocamos várias distribuições de python no Mac e no Ubuntu e aqui está minha recomendação.

  1. Deixar o sistema python sem ser molestado: nunca use-o.

  2. Se você precisar apenas de uma distribuição Python primária, faça o download e instale o Canopy a partir do enthought. Quando ele é instalado, escolha "set as my system python" e, em seguida, você pode instalar os pacotes do gerenciador de pacotes GUI do Canopy.

    • O Canopy também é compatível com pip , o comando do gerenciador de pacotes PyPi que permite instalar pacotes (por exemplo, pip install python-twitter )
  3. Se você planeja usar ambientes virtuais (ou seja, você está desenvolvendo programas python e deseja um ambiente python limpo e dedicado para cada um, com um meio fácil de alternar entre eles), eu recomendaria o Anaconda sobre o Canopy devido a ferramenta gerenciador de ambiente virtual . Isso permitirá que você
por 21.01.2015 / 00:40
0

Aviso: acabei de postar esta mesma resposta para estouro de pilha:

link

Aqui está minha opinião sobre o problema. Funciona para Python3. As principais características são:

  • Cada versão do Python é compilada a partir da fonte
  • Todas as versões estão instaladas localmente
  • Não maneja a instalação padrão do Python do seu sistema de alguma forma
  • Cada versão do Python é isolada com virtualenv

Os passos são os seguintes:

  1. Se você tiver várias versões extras do python instaladas de alguma outra maneira, elimine-as, por exemplo, remova $ HOME / .local / lib / python3.x , etc. os globalmente instalados). Não toque na versão padrão do seu sistema python3.

  2. Faça o download da fonte para diferentes versões do Python na seguinte estrutura de diretório:

    $HOME/
        python_versions/ : download Python-*.tgz packages here and "tar xvf" them.  You'll get directories like this:
          Python-3.4.8/
          Python-3.6.5/
          Python-3.x.y/
          ...
    
  3. Em cada diretório "Python-3.x.y /", faça o seguinte (do NOT use "sudo" em qualquer uma das etapas!):

    mkdir root
    ./configure --prefix=$PWD/root 
    make -j 2
    make install
    virtualenv --no-site-packages -p root/bin/python3.x env
    
  4. Em "python_versions /" crie arquivos como este:

    env_python3x.bash:
    
    #!/bin/bash
    echo "type deactivate to exit"
    source $HOME/python_versions/Python-3.x.y/env/bin/activate
    
  5. Agora, sempre que você quiser optar por python3.x, faça

    source $HOME/python_versions/env_python3x.bash
    

    para entrar no virtualenv

  6. Enquanto no virtualenv, instale seus pacotes favoritos de python com

    pip install --upgrade package_name
    
  7. Para sair da versão virtualenv e python, basta digitar "desativar"

por 13.05.2018 / 20:27