Instale o pypy (ou outro python) para ser o python principal

1

Eu quero substituir o padrão CPython (Python) por pypy (1.8).

Isso causará um problema? (Eu pergunto porque python parece ser um componente importante no Ubuntu.).

Eu criei o pypy e o instalei em uma máquina virtual do Ubuntu (estou testando essa ideia antes de fazer isso na minha máquina real. Então, enquanto podemos tentar, minha intenção é conseguir isso em "real". vida "como se fosse.)

O Pypy é utilizável em qualquer parte do sistema via pypy , em oposição a python .

pypy my_python_script.py

Parece estar bem instalado e parece utilizável.

Agora, quero fazer com que, a qualquer momento que eu quiser usar python, suponha que eu quero dizer pypy.

Por exemplo, eu instalei o Django no pypy, mas quando tento executar o django-admin.py ele não tem ideia do que estou falando. Eu imagino que eu poderia realizar esta parte adicionando onde django-admin.py é a minha variável $HOME .

Isso, por enquanto, está de lado.

Então, minha pergunta é como substituir o python padrão pela minha versão preferida - neste caso, pypy.

Estou revisando minha pergunta com base na resposta até agora - que substituir CPython no todo não é uma boa ideia , pois poderia promover o sistema.

Eu li um pouco sobre virtualenv - parece bom, mas não parece responder a minha pergunta (ou, eu estou perdendo como).

Eu quero usar pypy para o meu trabalho em python. Trabalho de desenvolvimento para coisas como Django, Google App Engine e outras bobagens. (Eu percebo que poderia haver um problema de compatibilidade, eu vou abordar aqueles com testes unitários ou outros meios. Só sei, está fora do ponto no momento.)

Então, tendo isso em mente, digamos que eu queira usar o pypy em vez do python. E para ./django-admin.py funcionar globalmente, teria que ser instalado com o python do sistema. Como eu poderia configurar o sistema para suportar esses scripts python "globais" do pypy ou do python principal do sistema?

    
por Frank V 12.02.2012 / 02:00

1 resposta

3

Não é uma boa idéia mexer com o sistema python porque, como você notou, o Ubuntu usa python amplamente, então qualquer mudança pode deixar seu sistema instável.

Além disso, como desenvolvedor, posso dizer que instalar bibliotecas de terceiros globalmente em seu sistema Python também não é uma boa idéia - tudo vai começar a desmoronar assim que você tiver dois projetos que requerem versões diferentes do Django, por exemplo.

Felizmente, o Python tem ótimas ferramentas para criar ambientes isolados que podem ser completamente independentes do sistema Python.

Dê uma olhada em virtualenv e zc.buildout (junto com o djangorecipe) para uma solução civilizada para o seu problema. :)

UPDATE: Muito brevemente, veja como o zc.buildout resolveria seu problema:

Você cria um diretório onde você coloca bootstrap.py e buildout.cfg arquivo que contém

[buildout]
parts = django
versions = versions

[versions]
django = 1.2.5

[django]
recipe = djangorecipe
settings = development
eggs = ${buildout:eggs}
project = mymegaapp

Então você executa /path/to/python/interpreter/python bootstrap.py , ponto no qual seu buildout "lembra" qual interpretador python você usou. Ele também cria um diretório bin , onde todos os seus scripts "globais" serão gerados automaticamente. Então você executa bin/buildout , que faz o download e instala o Django da versão especificada, cria um projeto vazio chamado "mymegaapp" etc. Após a conclusão, você encontrará o comando django no diretório bin que é equivalente ao django- admin.py, para que você possa executar

bin/django syncdb
bin/django runserver

Você nunca precisa se preocupar em lembrar de usar o intérprete correto. Claro, isso é apenas uma parte muito pequena do que você pode fazer com o buildout ... apenas pense em colocar o buildout.cfg em um VCS para que você possa reconstruir o aplicativo com todas as dependências em versões exatas, mesmo em alguns daqui a alguns anos ... ou sobre ter várias configurações para diferentes "configurações de implantação":)

Para um exemplo rápido de como fazer isso com o virtualenv, você pode dar uma olhada neste artigo - as instruções devem funcionar separadas da primeira parte - você precisará instalar o setuptools com o seu pypy, não com o interpretador 'padrão'. Em seguida, você usará o script python gerado no diretório bin da sandbox:

cd myapp
../venv/bin/python manage.py runserver 0.0.0.0:8000

(tenho a sensação de que a questão se torna cada vez menos relevante para o Ubuntu ... devemos pedir que seja migrada para o stackoverflow?)

    
por Sergey 12.02.2012 / 06:08