Pergunta

Estou usando o virtualenv recentemente durante o desenvolvimento em Python. Eu gosto da idéia de um ambiente de desenvolvimento segregada utilizando a opção --no-site-packages, mas fazendo isso durante o desenvolvimento de um aplicativo de PyGTK pode ser um pouco complicado. Os módulos PyGTK estão instalados no Ubuntu, por padrão, e eu gostaria de fazer um virtualenv (com --no-site-packages) ciente de módulos específicos que estão localizados em outra parte do sistema.

Qual é a melhor maneira de fazer isso? Ou devo apenas chupa-lo e soltar a opção --no-site-packages?

Foi útil?

Solução

$ virtualenv --no-site-packages --python=/usr/bin/python2.6 myvirtualenv
$ cd myvirtualenv
$ source bin/activate
$ cd lib/python2.6/
$ ln -s /usr/lib/pymodules/python2.6/gtk-2.0/ 
$ ln -s /usr/lib/pymodules/python2.6/pygtk.pth 
$ ln -s /usr/lib/pymodules/python2.6/pygtk.py 
$ ln -s /usr/lib/pymodules/python2.6/cairo/
$ python
>>> import pygtk
>>> import gtk

Outras dicas

Uma maneira é adicionar os caminhos para o seu código usando sys.path.

import sys

sys.path.append(somepath)

Outra maneira é usar o site, que processa .pth arquivos Além de adicionar a sys.path.

import site

site.addsitedir(sitedir, known_paths=None)

https://docs.python.org/library/site.html

Mas você provavelmente não quer adicionar este a todo o seu código relacionado.

Eu vi menção de estar sitecustomize.py usado para executar algo parecido com isso, mas depois de alguns testes que eu não poderia fazê-lo funcionar como seria de esperar.

Aqui menciona que auto-importação de sitecustomize.py terminou em 2.5, se a sua não no 2.5 experimentá-lo. (Basta adicionar um dos métodos Path Adicionar acima para o arquivo e solte-o no diretório de seu programa é executado) Um trabalho em torno método é mencionado no post para usuários de 2,5 e para cima.

http://code.activestate.com/recipes/552729/

I encontrar nesta situação, links simbólicos, ou mesmo copiar arquivos específicos (pacotes, módulos, extensões) funciona muito bem.

Ele permite que o programa para emular a ser executado no ambiente de destino, em vez de alterar a aplicação para se adequar ao ambiente de desenvolvimento.

Mesma coisa para algo como AppEngine.

Confira o roteiro postmkvirtualenv gancho aqui:

https://stackoverflow.com/a/9716100/60247

Nesse caso, ele está usando-o para importar PyQt e SIP após uma nova Virtualenv é criada, mas você pode adicionar os pacotes que você precisa LIBS.

e votar esse script, porque é fantástico:)

Se você quiser incluir os links para o sistema relevante python gtk-2.0 na virtualenv, você pode apenas usar pip para instalar ruamel.venvgtk :

pip instalar ruamel.venvgtk Você não tem de importação nada, as ligações são configurados durante a instalação.

Isto é especialmente útil se você estiver usando tox, nesse caso, você só precisa incluir a dependência (para tox):

deps:
    pytest
    ruamel.venvgtk

e um ambiente recém configuração python2.7 terá os links relevantes incluídos antes de os testes são executados.

Informações mais detalhadas sobre como os links são a instalação pode ser encontrado em esta resposta

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top