Virtualenv: global site-packages vs le site-packages dans l'environnement virtuel
-
13-09-2019 - |
Question
- Si j'ai un certain paquet installé à la fois dans l'économie mondiale site-packages et dans le local, quel paquet va obtenir importé? Est-ce que le travail même ou vais-je recevoir une erreur?
- Quels paquets dois-je mettre dans le site-packages mondial et qui, dans le local?
La solution
La réponse précédente se termine la question 1, mais ne tient pas compte la question 2.
La meilleure pratique générale, je l'ai vu pour les paquets à mettre à l'échelle mondiale:
Tout d'abord, les paquets Python de base, que ceux-ci ne changent pas les problèmes de rétro-incompatibles, sauf si vous êtes mise à niveau d'une version majeure, et vous voulez tout les correctifs de sécurité à partir d'une mise à niveau de python pour appliquer automatiquement à vos virtualenvs.
En second lieu, les paquets qui sont une douleur à easy_install ou pépin installer dans chaque individu virtualenv mais qui ne changent pas très souvent - MySQLdb / psycopg et PIL, par exemple.
À peu près tout le monde devrait aller dans votre forfaits de virtualenv (je vous recommande fortement d'utiliser les exigences pépin fichiers et virtualenvwrapper pour faire ce peu douloureux et facile à installer sur d'autres machines).
Autres conseils
nouvellement créé environnement virtuel par défaut ont accès au répertoire mondial site-packages, à moins créé avec --no-site-packages. Appel easy_install (installation de nouveaux packages) avec certains environnement activé provoque l'écrasement local celles déjà existantes dans le site-packages globaux (analogue à l'héritage). Environnement utilisera ses propres packages locaux, lorsque manquants -. Ceux globaux