De acordo com esta resposta , apt-get
instala pacotes em todo o sistema (do canonical) e só pip
pode instalar pacotes em um virtualenv (do Pypi).
No entanto, preciso instalar um pacote em um virtualenv que seja acessível apenas via apt-get
, ou seja, não seja hospedado pelo Pypi.
Como faço isso?
apt
software-installation
pip
romano
fonte
fonte
Respostas:
Outra alternativa é baixar o arquivo com
apt-get download
, extraí-lo comdpkg -x
e mover os arquivos extraídos para o seu virtualenv:Exemplo:
assuma que isso resulta em:
Em seguida, use o dpkg para extrair a parte dos dados do arquivo .deb:
No
./xyz-tmp
diretório recém-criado , agora você tem todos os arquivos que teriam sido instalados no/
(root) se você tivesse usadoapt-get install
.Suponha que eles sejam:
Você ainda precisa mapear os subdiretórios (por exemplo,
dist-packages
vs.site-packages
) e pode mover os arquivos para o seu virtualenv (assumindo um virtualenv/home/user/.virtualenvs/py27
):Comparado à minha resposta anterior, essa abordagem tem a vantagem de não ser necessário pesquisar quais arquivos foram instalados, porque você pode vê-los no diretório de extração. Ele ainda requer um mapeamento de diretórios entre o archive extraído e o virtualenv.
fonte
Tudo o que é necessário para um virtualenv é a presença dos arquivos do pacote na subárvore do seu virtualenv. Desde que você possa determinar quais arquivos foram instalados no sistema Python via apt-get, você pode copiá-los em seu virtualenv. Isso inclui arquivos no diretório de pacotes do site, bem como em outros lugares dentro da subárvore Python (por exemplo, scripts).
Exemplo hipotético:
Suponha que ele instale um pacote chamado "xyz" em seu sistema Python 2.7, você pode obter o seguinte:
Copie os arquivos relacionados ao pacote "xyz" para o seu virtualenv (assumindo um virtualenv
/home/user/.virtualenvs/py27
):A dificuldade é (1) determinar quais arquivos pertencem a um pacote específico e (2) mapear os subdiretórios correspondentes entre o sistema Python e o virtualenv (por exemplo,
dist-packages
vs.site-packages
no exemplo acima).Se alguém tiver mais experiência com isso, comente.
fonte