Geralmente não é aconselhável tentar usar a versão do Python incluída em um sistema. Esses aplicativos não são tanto para os usuários, mas para suportar os aplicativos que são empacotados com o sistema operacional. Muito do encanamento interno da distro depende desses pacotes específicos do Python.
Se você precisa de versões específicas de Python, Perl, Ruby etc., você deve ter o hábito de usar sistemas como os seguintes para configurar suas próprias versões locais desses intérpretes:
- Python: pyenv , virtualenv , e virtualenvwrapper
- Perl: perlbrew
- Ruby: rvm
pyenv
Este projeto costumava ser conhecido como pythonbrew , mas agora é conhecido como pyenv
. Para instalá-lo, você precisa clonar uma cópia dele no diretório $HOME
da seguinte forma:
$ git clone git://github.com/yyuu/pyenv.git .pyenv
Cloning into .pyenv...
remote: Counting objects: 2207, done.
remote: Compressing objects: 100% (617/617), done.
remote: Total 2207 (delta 1489), reused 2172 (delta 1462)
Receiving objects: 100% (2207/2207), 358.75 KiB, done.
Resolving deltas: 100% (1489/1489), done.
Agora adicione a configuração de pyenv
ao seu arquivo ~/.bashrc
:
$ echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> .bashrc
$ echo 'eval "$(pyenv init -)"' >> .bashrc
Você pode ver o uso de pyenv
:
$ pyenv
pyenv 0.4.0-20130613-17-ge1ea64b
Usage: pyenv <command> [<args>]
Some useful pyenv commands are:
commands List all available pyenv commands
local Set or show the local application-specific Python version
global Set or show the global Python version
shell Set or show the shell-specific Python version
install Install a Python version using the python-build plugin
uninstall Uninstall a specific Python version
rehash Rehash pyenv shims (run this after installing executables)
version Show the current Python version and its origin
versions List all Python versions available to pyenv
which Display the full path to an executable
whence List all Python versions that contain the given executable
See 'pyenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/yyuu/pyenv#readme
Você pode ver quais versões estão disponíveis:
$ pyenv versions
* system (set by /home/saml/.pyenv/version)
Agora vamos instalar o Python 3.2.5:
$ pyenv install 3.2.5
Downloading Python-3.2.5.tgz...
-> http://yyuu.github.io/pythons/ed8d5529d2aebc36b53f4e0a0c9e6728
Installing Python-3.2.5...
Installed Python-3.2.5 to /home/saml/.pyenv/versions/3.2.5
Downloading setuptools-0.9.5.tar.gz...
-> https://pypi.python.org/packages/source/s/setuptools/setuptools-0.9.5.tar.gz
Installing setuptools-0.9.5...
Installed setuptools-0.9.5 to /home/saml/.pyenv/versions/3.2.5
Downloading pip-1.3.1.tar.gz...
-> http://yyuu.github.io/pythons/cbb27a191cebc58997c4da8513863153
Installing pip-1.3.1...
Installed pip-1.3.1 to /home/saml/.pyenv/versions/3.2.5
Reconstrua nosso ambiente para incorporar a nova instalação:
$ pyenv rehash
Agora devemos ver duas versões disponíveis, o sistema ainda é o padrão ( *
):
$ pyenv versions
* system (set by /home/saml/.pyenv/version)
3.2.5
Vamos para a versão 3.2.5:
$ pyenv which python
/usr/bin/python
$ pyenv global 3.2.5
$ pyenv which python
/home/saml/.pyenv/versions/3.2.5/bin/python
$ pyenv versions
system
* 3.2.5 (set by /home/saml/.pyenv/version)
virtualenv & virtualenvwrapper
Esses dois módulos do Python fornecem mecanismos para manter espaços de trabalho separados onde os pacotes de sites podem ser mantidos. Eles são uma boa opção se você quiser isolar conjuntos de módulos do Python em conjuntos e associá-los a um determinado aplicativo Python. Eles são um pouco desajeitados de usar, mas fazem o trabalho.
Há um screencast que mostra como usar o virtualenvwrapper também. Para o Python, configurei virtualenv
primeiro, seguido por virtualenvwrapper
.
Exemplo
$ sudo easy_install virtualenv
$ easy_install virtualenvwrapper
Neste ponto, os 2 módulos do Python foram instalados. A partir daqui, você precisa configurar o seu ambiente, adicione o seguinte ao seu arquivo $HOME/.bashrc
:
export WORKON_HOME=$HOME/.virtualenvs
source /usr/bin/virtualenvwrapper.sh
Agora, reenvie seu .bashrc
:
$ source ~/.bashrc
Agora você está pronto para listar seus ambientes de trabalho:
$ workon
$
Você ainda não tem, então vamos criar um, vamos chamar de "temp":
$ mkvirtualenv temp
New python executable in temp/bin/python
Installing setuptools................done.
Agora, quando listamos novamente nossos worksets usando workon
:
(temp)$ workon
temp
Observe que o prompt foi alterado para que o espaço de trabalho seja prefixado na frente do seu prompt. Agora, para removê-lo:
(temp)$ rmvirtualenv temp
Removing temp...
ERROR: You cannot remove the active environment ('temp').
Either switch to another environment, or run 'deactivate'.
Não é possível desativá-lo e seu prompt está de volta ao normal:
(temp)$ deactivate
$
Agora tente removê-lo:
$ rmvirtualenv temp
Removing temp...
Agora vamos recriá-lo novamente e cd para o nosso espaço de trabalho:
$ mkvirtualenv temp
New python executable in temp/bin/python
Installing setuptools................done.
(temp)$ cdvirtualenv
(temp)$ ls
bin include lib lib64
Agora confira os pacotes de site do espaço de trabalho "temp":
$ cdsitepackages
(temp)$ pwd
/home/saml/.virtualenvs/temp/lib/python2.7/site-packages
Agora vamos instalar um módulo Python, smooshy
, primeiro vamos procurá-lo usando pip
:
(temp)$ pip search smooshy
smooshy - Automatic lossless image compression
Agora instale:
(temp)$ pip install smooshy
Downloading/unpacking smooshy
Downloading smooshy-1.tar.gz
Running setup.py egg_info for package smooshy
Requirement already satisfied (use --upgrade to upgrade): simplejson in /usr/lib64/python2.7/site-packages (from smooshy)
Installing collected packages: smooshy
Running setup.py install for smooshy
changing mode of build/scripts-2.7/smooshy from 664 to 775
changing mode of /home/saml/.virtualenvs/temp/bin/smooshy to 775
Successfully installed smooshy
Cleaning up...
Para confirmar onde foi instalado:
(temp)$ which smooshy
~/.virtualenvs/temp/bin/smooshy