A maneira sugerida para lidar com pip (easy_install) com homebrew?

5

Eu sei que existem brew-gem e brew-pip mas ainda é muito fácil ficar confuso. Digamos que meu Mac OS X seja 10.7.2.

  • Há pelo menos, até onde eu sei, 3 locais para módulos Python (suponha 2.7):
    1. /System/Library/Frameworks/Python.framework/Versions/2.7 /
    2. /Library/Python/2.7/site-packages
    3. /usr/local/lib/python2.7/site-packages/ (controlado dentro de homebrew)
  • Para alguns módulos Python, pip instale-os em 2 , o chamado local do módulo Python local / personalizado, e tudo parece e funciona muito bem. Ex, readline por easy_install ( ipython sugeriu que eu instalasse readline por easy_install de pip )
  • Para alguns, ele tentaria instalar alguns arquivos diversos (ex, man, doc, ...) em toda a localização do sistema, o que requer sudo ! Ex, o ipython insistiu na instalação do man e do doc em /System/Library/Frameworks/Python.framework/Versions/2.7/share / , que viola o problema de permissão e tudo o que posso fazer é usar sudo .
  • Para alguns módulos do Python instalados pelo brew , eles estão simbolicamente vinculados a /usr/local/lib/python2.7/site-packages / . Tudo parece ótimo, exceto que você precisa se lembrar de adicionar esse local em PYTHONPATH .

Eu estou me perguntando sobre qualquer maneira sugerida e uniforme de lidar com essa massa, ou qualquer explicação para deixar essas coisas bem claras.

    
por Drake Guan 12.02.2012 / 03:18

2 respostas

3

Talvez seja hora de considerar o uso de virtualenv . Virtualenv cria ambientes python independentes usando a versão do python que você especificar. Depois de ativar o novo ambiente virtual, tudo o que você instalar usando o pip passará por esse ambiente. Isso ajuda a evitar situações como a que você descreveu.

Por exemplo crie e ative um novo ambiente python usando o python padrão:

# create environment
$ virtualenv --distribute myproject
New python executable in myproject/bin/python
Installing distribute...done.
Installing pip...done.

# activate environment
$ . ./myproject/bin/activate

# check default python
(myproject)$ which python
/Users/me/myproject/bin/python

Sugere-se usar as opções --distribute para indicar que a distribuição deve ser usada para instalar pacotes no novo ambiente, em vez de setuptools (mais antigos). Após a ativação, seu prompt de comando é alterado para indicar qual ambiente python está ativo.

Agora instale algum pacote. Os arquivos irão para o diretório myproject:

# install django
(myproject)$ pip install django
...

# search for django dir
(myproject)$ find myproject -iname django
myproject/lib/python2.7/site-packages/django

Por fim, desative:

# deactivate and check for default python
(myproject)$ deactivate
$ which python
/usr/bin/python

Para criar um ambiente usando uma versão não padrão do python:

$ virtualenv --distribute -p /path/to/custom/python mynewproject

Por padrão virtualenv irá copiar para o novo ambiente todos os pacotes instalados para a versão do Python que você usa para fazer o bootstrap. Para evitar isso e criar um ambiente vazio, use a opção --no-site-packages . Isto é especialmente útil para criar ambientes que podem ser replicados exatamente, e. do desenvolvimento à produção.

Atualização: A partir da versão 1.7 --no-site-packages se tornou o comportamento padrão do virtualenv.

Se você quiser mais detalhes, há muitos tutoriais e postagens de blogs on-line. Por exemplo:

  1. Notas sobre o uso do pip e do virtualenv com o Django. (a maioria do post não é específico do django)
  2. Trabalhando com o virtualenv.

Tente e tenho certeza que você vai ficar com ele.

Nota: Certifique-se de que seus scripts executáveis não tenham o intérprete do python codificado. Ou seja sua primeira linha deve ser #!/usr/bin/env python e não algo como #!/usr/bin/python .

    
por 23.08.2012 / 12:07
0

Minhas sugestões:

  1. Instale o pacote de ferramentas de linha de comando xcode via Xcode - > Preferências - > Downloads- > Componentes :

  2. Instale o homebrew (atualize seu caminho em .profile , .SHELLrc ou o que for para incluir /usr/local/bin antes o padrão do sistema como /usr/bin ).

  3. Para o python, primeiro instale todos os pré-requisitos sozinhos:

    • brew install readline sqlite gdbm pkg-config
    • brew install python --framework --universal
    • atualize seu caminho para que ele use as distutils corretas: export PATH=/usr/local/share/python:$PATH
  4. easy_install pip

  5. pip install virtualenv
  6. pip install virtualenvwrapper
  7. Incluir export PYTHONPATH=/usr/local/lib/python:$PYTHONPATH
por 16.08.2012 / 08:28