Selon cette réponse , apt-get
installe les packages à l'échelle du système (à partir de canoniques), et ne pip
peut installer des packages que dans un virtualenv (à partir de Pypi).
Cependant, j'ai besoin d'installer un package dans un virtualenv qui n'est accessible que via apt-get
, c'est-à-dire qui n'est pas hébergé par Pypi.
Comment je fais ça?
apt
software-installation
pip
romain
la source
la source
Réponses:
Une autre alternative consiste à télécharger le fichier avec
apt-get download
, à l'extraire avecdpkg -x
et à déplacer les fichiers extraits vers votre virtualenv:Exemple:
supposons que cela se traduit par:
Ensuite, utilisez dpkg pour extraire la partie données du fichier .deb:
Dans le
./xyz-tmp
répertoire nouvellement créé , vous avez maintenant tous les fichiers qui auraient été installés sur/
(root) si vous aviez utiliséapt-get install
.Supposons qu'ils soient:
Vous devez toujours mapper les sous-répertoires (par exemple,
dist-packages
vs.site-packages
) et pouvez ensuite déplacer les fichiers dans votre virtualenv (en supposant un virtualenv/home/user/.virtualenvs/py27
):Par rapport à ma réponse précédente, cette approche a l'avantage que vous n'avez pas à rechercher les fichiers installés, car vous pouvez les voir dans le répertoire d'extraction. Il nécessite toujours un mappage de répertoires entre l'archive extraite et virtualenv.
la source
Tout ce qui est nécessaire pour un virtualenv est la présence des fichiers de package dans la sous-arborescence de votre virtualenv. Aussi longtemps que vous pouvez déterminer quels fichiers ont été installés dans le système Python via apt-get, vous pouvez les copier dans votre virtualenv. Cela inclut les fichiers dans le répertoire des packages du site ainsi que dans d'autres endroits de votre sous-arborescence Python (par exemple des scripts).
Exemple hypothétique:
Supposons qu'il installe un package nommé "xyz" dans votre système Python 2.7, vous pouvez obtenir ceci:
Copiez les fichiers liés au package "xyz" sur votre virtualenv (en supposant un virtualenv
/home/user/.virtualenvs/py27
):La difficulté est (1) de déterminer quels fichiers appartiennent à un package particulier, et (2) de mapper les sous-répertoires correspondants entre le système Python et virtualenv (par exemple
dist-packages
vssite-packages
dans l'exemple ci-dessus).Si quelqu'un a plus d'expérience avec cela, veuillez commenter.
la source