No Debian, como adiciono um pacote Python em dist-packages a um virtualenv?

7

Dado algum pacote python em /usr/share/pyshared/ ou /usr/lib/pythonX.Y/dist-packages/ (use python-numpy ou python-scipy por exemplo), como adiciono esse pacote a um virtualenv?

Ao adicionar o pacote ao virtualenv, ele requer que ele use o método de instalação "normal" do python ( setpy.py etc.) para instalar ou ter o seu próprio?

Basicamente, eu quero ser capaz de adicionar facilmente pacotes python, que têm extensões C complexas ( numpy , scipy , pyQt/pyside , pygtk etc.), para um virtualenv.

    
por James Tocknell 27.06.2012 / 08:42

3 respostas

1

Eu acho que, como essa pergunta não tem nenhuma atividade há mais de um ano (em março de 2014), ninguém tem uma resposta, então vou escrever como resolvi o problema.

Para pacotes cujo método de instalação de origem respeita o virtualenvs (numpy / scipy, pyside), use as rodas para evitar a reconstrução em todas as divisões.

Para pacotes que não (GTK), isso depende de como eles se conectam ao python.

    
por 20.03.2014 / 11:53
3

Como você indicou, fazer uma roda geralmente é melhor, especialmente se você reinstalar regularmente.

Para as ligações gtk do python, isso não funcionou para mim, e eu precisei de alguma forma para testar o código usando tox (que cria o virtualenvs para você com --no-site-packages). Para fins de teste, seria bom o suficiente (para mim) vincular as versões instaladas do sistema relevante, mas nem tudo de site-packages / dist-packages .

Para isso eu criei um pacote instalável ( ruamel.venvgtk ), que configura os links apropriados para o Python2 .7 e Python3.4 em sistemas baseados em Debian (Ubuntu, Linux Mint). Isso acontece durante a configuração do programa, portanto, não há necessidade de alterar seu programa. A seção tox.ini do arquivo deps se parece com:

deps =
    pytest
    ruamel.venvgtk

e para qualquer virtualenv criado, pip instalará ruamel.venvgtk e criará os links relevantes.

    
por 15.12.2014 / 06:40
1

Sim, quando seu virtualenv estiver ativo, você precisará instalar o pacote necessário usando distutils o método de instalação "normal" do Python ( python setup.py install ) ou com uma ferramenta virtualenv aware (por exemplo, pip install package ).

A versão do pacote que você instala será a versão do pacote ativo para o virtualenv. Não importa se você cria o virtualenv usando virtualenv MY_ENV ou virtualenv --no-site-packages MY_ENV . No primeiro caso, todos os pacotes instalados em seu sistema Python estarão disponíveis no virtualenv, mas qualquer pacote que você instalar no virtualenv irá mascarar a versão em seu sistema Python enquanto o virtualenv estiver ativo. No segundo caso, você terá um ambiente Python isolado no virtualenv, com apenas os pacotes de bibliotecas padrão e qualquer coisa que você instalar lá disponível.

Esteja ciente de que pacotes como o Numpy e o Scipy não fornecem binários pré-compilados no Linux, então você precisa estar confortável construindo-os você mesmo se não quiser usar as versões disponíveis através do seu gerenciador de pacotes.

    
por 03.07.2012 / 15:43

Tags