Il n'y a vraiment pas une seule «réponse» à cette question, mais il existe certainement des concepts utiles qui peuvent vous aider à prendre une décision.
La première question à laquelle il faut répondre dans votre cas d'utilisation est "Est-ce que je veux utiliser le système Python?" Si vous souhaitez utiliser le Python distribué avec votre système d'exploitation, utiliser la méthode d'installation apt-get peut être très bien. Cependant, selon la méthode de distribution du système d'exploitation, vous devez encore poser quelques questions supplémentaires, telles que "Est-ce que je veux installer plusieurs versions de ce package?" Si la réponse est oui, alors ce n'est probablement pas une bonne idée d'utiliser quelque chose comme apt. Dpkg décompressera à peu près juste une archive à la racine du système de fichiers, c'est donc au responsable du paquet de s'assurer que le paquet s'installe en toute sécurité avec de très petites hypothèses. Dans le cas de la plupart des paquets Debian, je suppose (quelqu'un peut se sentir libre de me corriger ici) qu'ils décompressent simplement et fournissent un paquet de premier niveau.
Par exemple, disons que le package est "virtualenv", vous vous retrouverez avec /usr/lib/python2.x/site-packages/virtualenv
. Si vous l'installez avec, easy_install
vous obtiendrez quelque chose comme /usr/lib/python2.x/site-packages/virtualenv.egg-link
ça qui pourrait pointer vers /usr/lib/python2.x/site-packages/virtualenv-1.2-2.x.egg
un répertoire ou un œuf zippé. Pip fait quelque chose de similaire bien qu'il n'utilise pas d'œufs et placera à la place le package de niveau supérieur directement dans le lib
répertoire.
Je suis peut-être sur les chemins, mais le fait est que chaque méthode prend en compte des besoins différents. C'est pourquoi des outils comme virtualenv sont utiles car ils vous permettent de sandbox vos bibliothèques Python de sorte que vous puissiez avoir n'importe quelle combinaison dont vous avez besoin de bibliothèques et de versions.
Setuptools permet également d'installer des packages en tant que multiversion, ce qui signifie qu'il n'y a pas de mo unique dule_name.egg-link
créé. Pour importer ces packages, vous devez utiliser pkg_resources et la __import__
fonction.
Pour revenir à votre question initiale, si vous êtes satisfait du système python et que vous prévoyez d'utiliser virtualenv et pip pour créer des environnements pour différentes applications, l'installation de virtualenv et / ou pip au niveau du système à l'aide d'apt-get semble tout à fait appropriée. Un mot d'avertissement cependant est que si vous prévoyez de mettre à niveau vos distributions Python, cela peut avoir un effet d'entraînement sur vos virtualenvs si vous vous connectez à vos packages de site système.
Je dois également mentionner qu'aucune de ces options n'est intrinsèquement meilleure que les autres. Ils adoptent simplement des approches différentes. L'utilisation de la version système est un excellent moyen d'installer des applications Python, mais cela peut être un moyen très difficile de développer avec Python. L'installation et les outils de configuration faciles sont très pratiques dans un monde sans virtualenv, mais si vous devez utiliser différentes versions de la même bibliothèque, cela devient également assez compliqué. Pip et virtualenv agissent vraiment plus comme une machine virtuelle. Au lieu de prendre soin d'installer les choses côte à côte, vous créez simplement un tout nouvel environnement. L'inconvénient ici est que plus de 30 virtualenvs plus tard, vous avez peut-être utilisé un peu d'espace disque et encombré votre système de fichiers.
Comme vous pouvez le voir, avec les nombreuses options, il est difficile de dire quelle méthode utiliser, mais avec une petite enquête sur vos cas d'utilisation, vous devriez être en mesure de trouver une méthode qui fonctionne.
ez_setup.py
pour une "version allégée" de faire pip. Je ferais la même chose mais je crains que cela ne se brise dans un proche avenir et que je reste coincé ici (comme je le fais toujours)