Question courte
- Quelle est la bonne façon d'installer
pip
,virtualenv
etdistribute
?
Contexte
Dans ma réponse à la question SO 4314376 , j'ai recommandé d'utiliser ez_setup
afin que vous puissiez ensuite installer pip
et virtualenv
comme suit:
curl -O http://peak.telecommunity.com/dist/ez_setup.py
sudo python ez_setup.py
sudo easy_install pip
sudo pip install virtualenv
À l'origine, j'ai tiré ces instructions du blog de Jesse Noller. Vous voulez donc utiliser Python sur Mac? . J'aime l'idée de conserver un répertoire global de packages de site propre, donc les seuls autres packages que j'installe sont virtualenvwrapper
et distribute
. (J'ai récemment ajouté distribute
à ma boîte à outils à cause de cette annonce de service public Python . Pour installer ces deux packages, j'ai utilisé:
sudo pip install virtualenvwrapper
curl -O http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py
Plus de setuptools et easy_install
Pour vraiment suivre cette annonce de service public Python , sur une nouvelle installation Python, je ferais ce qui suit:
curl -O http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py
sudo easy_install pip
sudo pip install virtualenv
sudo pip install virtualenvwrapper
Réprimande de glyphe
Dans un commentaire sur ma réponse à la question SO 4314376 , l'utilisateur SO Glyph a déclaré:
NON. JAMAIS faire
sudo python setup.py install
quoi que ce soit. Écrivez un ~ / .pydistutils.cfg qui place votre installation pip dans ~ / .local ou quelque chose. En particulier, les fichiers nommésez_setup.py
ont tendance à aspirer les nouvelles versions de choses comme setuptools et easy_install, ce qui peut potentiellement casser d'autres choses sur votre système d'exploitation.
Retour à la courte question
Donc , la réponse de Glyphe me conduit à ma question initiale:
- Quelle est la bonne façon d'installer
pip
,virtualenv
etdistribute
?
la source
python distribute_setup.py
suivi deeasy_install pip
etvirtualenv --distribute venv
? (voir python-guide.readthedocs.org/en/latest/starting/install/… ), et si oui, pourquoi?sudo apt-get install python-{pip,virtualenv}
???pip
,virtualenv
et le Python PSA.http://python-distribute.org/distribute_setup.py
redirige vers 404 :(Réponses:
Vous pouvez le faire sans rien installer dans python lui-même.
Vous n'avez pas besoin de sudo ni de privilèges.
Vous n'avez pas besoin de modifier de fichiers.
Installez virtualenv dans un environnement virtuel d'amorçage. Utilisez cet environnement virtuel pour en créer davantage. Étant donné que virtualenv est fourni avec pip et distribue, vous obtenez tout d'une seule installation.
Voici un exemple en bash:
Vous pouvez maintenant utiliser votre environnement "bootstrap" pour en créer plus:
Devenir fou!
Remarque
Cela suppose que vous n'utilisez pas une version vraiment ancienne de virtualenv. Les anciennes versions nécessitaient les drapeaux
--no-site-packges
(et selon la version de Python,--distribute
). Vous pouvez maintenant créer votre environnement d'amorçage avec justepython virtualenv.py path-to-bootstrap
oupython3 virtualenv.py path-to-bootstrap
.la source
python virtualenv.py TARGET_DIRECTORY
fait la même chose.virtualenv
options '--no-site-packages --distribute' actuelles n'ont pas besoin. L'inverse--system-site-packages
pourrait être nécessairecurl -Lo virtualenv-tmp.tar.gz 'https://github.com/pypa/virtualenv/tarball/master'
virtualenvwrapper
? Les documents préviennent spécifiquement de ne pas l'installer dans un virtualenv (bien que cela semble fonctionner ).Je pense que Glyph signifie faire quelque chose comme ça:
~/.local
, s'il n'existe pas déjà.~/.bashrc
, assurez-vous que~/.local/bin
c'est alluméPATH
et que~/.local
c'est alluméPYTHONPATH
.Créez un fichier
~/.pydistutils.cfg
qui contientIl s'agit d'un fichier au format ConfigParser standard.
Téléchargez
distribute_setup.py
et exécutezpython distribute_setup.py
(nonsudo
). S'il se plaint d'unsite-packages
répertoire inexistant , créez-le manuellement:mkdir -p ~ / .local / lib / python2.7 / site-packages /
Exécutez
which easy_install
pour vérifier qu'il provient~/.local/bin
pip install virtualenv
pip install virtualenvwrapper
~/.virtualenvs
En
~/.bashrc
plusC'est tout, aucune utilisation du
sudo
tout et votre environnement Python est dedans,~/.local
complètement séparé du Python du système d'exploitation. Avis de non-responsabilité: Je ne suis pas sûr de la compatibilitévirtualenvwrapper
de ce scénario - je n'ai pas pu le tester sur mon système :-)la source
easy_install pip
entre les étapes 5 et 6.Si vous suivez les étapes conseillées dans plusieurs tutoriels que j'ai liés dans cette réponse , vous pouvez obtenir l'effet souhaité sans les étapes "manuelles" quelque peu compliquées dans les réponses de Walker et Vinay. Si vous êtes sur Ubuntu:
L'équivalent est obtenu sous OS X en utilisant homebrew pour installer python (plus de détails ici ).
Une fois
pip
installé, vous pouvez l'utiliser pour obtenir les packages restants (vous pouvez omettresudo
dans OS X, car vous utilisez votre installation locale de python).(ce sont les seuls packages dont vous avez besoin installés dans le monde et je doute qu'il soit en conflit avec quoi que ce soit au niveau du système du système d'exploitation. Si vous voulez être super sûr, vous pouvez conserver les versions de la distribution
sudo apt-get install virtualenvwrapper
)Remarque: dans Ubuntu 14.04 je reçois quelques erreurs avec l'installation de pip , donc j'utilise
pip3 install virtualenv virtualenvwrapper
et j'ajouteVIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
à mon.bashrc/.zshrc
fichier.Vous ajoutez ensuite à votre
.bashrc
fichieret l'approvisionner
C'est fondamentalement ça. Maintenant, la seule décision est de savoir si vous voulez créer un virtualenv pour inclure des packages au niveau du système
là où vos packages système existants n'ont pas besoin d'être réinstallés, ils sont liés aux versions de l'interpréteur système. Remarque: vous pouvez toujours installer de nouveaux packages et mettre à niveau les packages inclus à partir du système existants sans sudo - je l'ai testé et cela fonctionne sans interruption de l'interpréteur système.
L'alternative, si vous voulez un environnement complètement séparé, est
ou étant donné qu'il s'agit de l'option par défaut, simplement
Le résultat est que vous avez un nouveau virtualenv où vous pouvez installer librement et sans problème vos packages préférés
la source
export WORKON_HOME="$HOME/.virtualenvs"
?brew install python
tire pip + setuptools). Cette approche fonctionne bien pour moi. De plus, se concentrer sur pip semble également être la voie future dans le packaging Python.WORKON_HOME
par défaut~/.virtualenvs
, oui. Il y a une ligne dans/usr/local/bin/virtualenvwrapper.sh
cet ensembleworkon_home_dir="$HOME/.virtualenvs"
if [ "$workon_home_dir" = "" ]
.pip install virtualenv virtualenv-wrapper
ligne avecpip install --upgrade distribute
le virtualenv activé dans lequel j'ai ensuite installé pyopencl. J'ai également ajoutéexport PROJECT_HOME="$HOME/src"
à mon bashrc pour activer l'mkproject
outil cool venv.Python 3.4 et versions ultérieures
Python 3.3 ajoute le module venv et Python 3.4 ajoute le module assurepip . Cela rend le bootstrap pip aussi simple que:
Peut-être précédé d'un appel à
venv
le faire dans un environnement virtuel.Le pip garanti est décrit dans PEP 453 .
la source
Sur Ubuntu:
sudo apt-get install python-virtualenv
Le package
python-pip
est une dépendance, il sera donc également installé.la source
pip
, de préférence dans unvirtualenv
, et ne jamais utilisersudo
pour l'un ou l'autrepip
comportent parfois des bogues importants, donc jeget-pip.py
finis souvent par utiliser les versions fournies sur python.org.J'ai fait cette procédure pour nous d'utiliser au travail.
Points clés pour la sécurité:
la source
Mise à jour: Depuis juillet 2013, ce projet n'est plus maintenu. L'auteur suggère d'utiliser pyenv . (pyenv n'a pas de support intégré pour virtualenv, mais joue bien avec.)
Pythonbrew est un gestionnaire de versions pour python et est livré avec la prise en charge de virtualenv.
Après avoir installé pythonbrew et une version python en utilisant venvs, c'est vraiment facile:
la source
pyenv
, qui fonctionne bien.Il n'y a aucun problème à faire l'installation de sudo python setup.py, si vous êtes sûr que c'est ce que vous voulez faire.
La différence est qu'il utilisera le répertoire site-packages de votre système d'exploitation comme destination pour les fichiers .py à copier.
donc, si vous voulez que pip soit accessible sur toute l'étendue, c'est probablement la voie à suivre. Je ne dis pas que les autres sont mauvais, mais c'est probablement assez juste.
la source
pip freeze
m'a presque gelé - la liste des packages, installés à l'échelle du système, était beaucoup trop longue. Depuis lors, je recommande fortement d'utiliser l'installation du package python "no sudo" et "no os-wide".Installez ActivePython . Il comprend pip, virtualenv et Distribute.
la source
J'ai rencontré le même problème récemment. Je suis de plus en plus partisan de la mentalité «toujours utiliser un virtualenv», donc mon problème était d'installer virtualenv avec pip sans installer distribuer dans mon répertoire global ou utilisateur de site-packages. Pour ce faire, j'ai téléchargé manuellement distribution, pip et virtualenv, et pour chacun, j'ai exécuté «python setup.py install --prefix ~ / .local / python-private» (avec un paramètre temporaire PYTHONPATH = ~ / .local / python-private) pour que les scripts d'installation puissent trouver distribuer). J'ai déplacé le script virtualenv vers un autre répertoire que j'ai sur mon PATH et l'ai modifié afin que les modules de distribution et virtualenv se trouvent sur sys.path. Tada: Je n'ai rien installé dans / usr, / usr / local ou dans le répertoire de mon site utilisateur, mais je peux exécuter virtualenv n'importe où, et dans ce virtualenv je reçois pip.
la source
J'ai eu divers problèmes (voir ci-dessous) lors de l'installation de modules SSL mis à niveau, même à l'intérieur d'un virtualenv, en plus des anciennes versions de Python fournies par le système d'exploitation, donc j'utilise maintenant
pyenv
.pyenv facilite l'installation de nouvelles versions de Python et prend en charge virtualenvs. Le démarrage est beaucoup plus facile que les recettes de virtualenv répertoriées dans d'autres réponses:
brew install pyenv
et sur Linux, utilisez pyenv-installerCela fonctionne très bien pour isoler la version "new Python" et virtualenv du système Python. Parce que vous pouvez facilement utiliser un Python plus récent (post 2.7.9), les modules SSL sont déjà mis à niveau, et bien sûr, comme toute configuration virtualenv moderne, vous êtes isolé des modules Python du système.
Quelques tutoriels sympas:
pyenv global 3.6.1
(global à l'utilisateur actuel) oupyenv local 2.7.13
(local au répertoire actuel).Le
pyenv-virtualenv
plugin est maintenant intégré - typepyenv commands | grep virtualenv
à vérifier. Je n'utiliserais pas le plugin pyenv-virtualenvwrapper pour commencer - voyez comment vous vous débrouillez avec pyenv-virtualenv qui est plus intégré dans pyenv, car cela couvre la plupart de ce que virtualenvwrapper fait.pyenv
est modélisérbenv
(un bon outil pour changer de version Ruby) et sa seule dépendance est bash.pyvenv
- c'est un équivalent de virtualenv qui fait partie des versions récentes de Python 3, et ne gère pas le changement de version PythonAvertissements
Deux avertissements concernant pyenv:
dash
, qui est/bin/sh
sur Ubuntu ou Debian.bash --login
aide d'un terminal), ce qui n'est pas toujours facile à réaliser avec des outils d'automatisation tels qu'Ansible .Par conséquent, pyenv est le meilleur pour une utilisation interactive et moins bon pour les serveurs de script.
Problèmes de module SSL
L'une des raisons de l'utilisation
pyenv
est qu'il y a souvent des problèmes avec la mise à niveau des modules SSL Python lors de l'utilisation d'anciennes versions Python fournies par le système:la source
Vous pouvez le faire sans rien installer dans python lui-même.
Vous n'avez pas besoin de sudo ni de privilèges.
Vous n'avez pas besoin de trouver la dernière version d'un
virtualenv
fichier tarVous n'avez pas besoin de modifier les informations de version dans un script bash pour garder les choses à jour.
Vous n'avez pas besoin
curl
/wget
outar
installé, nipip
oueasy_install
cela fonctionne pour 2.7 ainsi que pour 3.X
Enregistrez les éléments suivants dans
/tmp/initvenv.py
:à partir de l' import futur fonction_impression
et l'utiliser comme
par exemple (si vous avez vraiment besoin de la
distribute
couche de compatibilité poursetuptools
)Veuillez noter qu'avec les anciennes versions de python, cela pourrait vous donner
InsecurePlatformWarning
s¹.Une fois que vous avez votre virtualenv (nom par exemple
venv
), vous pouvez configurer un autre virtualenv en utilisant levirtualenv
juste installé:virtualenvwrapper
Je recommande également de jeter un œil à virtualenvwrapper , après une configuration unique:
et activation (peut être fait à partir de votre script de connexion):
vous pouvez faire des choses comme:
¹ Je n'ai pas trouvé de moyen de supprimer l'avertissement. Cela pourrait être résolu dans
pip
et / ourequest
, mais les développeurs se désignent mutuellement comme la cause. J'ai reçu la recommandation, souvent non réaliste, de mettre à niveau la version python que j'utilisais vers la dernière version. Je suis sûr que cela casserait par exemple mon installation de Linux Mint 17. Heureusement,pip
met en cache les packages, donc l'avertissement n'est émis qu'une seule fois par installation de package.la source
InsecurePlatformWarning
(c'est-à-dire l'avertissement si Python est plus ancien que la version 2.7.9) peut être corrigé en installant des packages supplémentaires pyopenssl, pyasn1, ndg-httpsclient de PyPI. (Il prend en charge SSL, les certificats de décodage, https via PyOpenSSL.) Sans les bons protocoles, il n'est vraiment pas suffisamment sécurisé pour télécharger et exécuter un code.Il y a de bonnes instructions sur le site officiel de Virtualenv. https://pypi.python.org/pypi/virtualenv
Fondamentalement, ce que j'ai fait, c'est installer
pip
avecsudo easy_install pip
, puis utilisersudo pip install virtualenv
puis créer un environnement avec:virtualenv my_env
(nommez-le ce que vous voulez), en suivant ce que j'ai faitvirtualenv --distribute my_env
:; qui a installédistribute
etpip
dans mon virtualenv.Encore une fois, suivez les instructions sur la
virtualenv
page.Une sorte de tracas, venant de Ruby; P
la source
Voici une belle façon d'installer virtualenvwrapper (mise à jour de cela ).
Téléchargez virtualenv-1.11.4 (vous pouvez le trouver ici ), décompressez-le, ouvrez
terminal
Ça y est, vous pouvez maintenant utiliser
mkvirtualenv env1
,lsvirtualenv
..etcRemarque: vous pouvez supprimer
virtualenv-1.11.4
etvirtualenv-1.11.4.zip
des dossiers Téléchargements.la source
La bonne nouvelle est que si vous avez installé python3.4, pyvenv est déjà installé. Alors, juste
Maintenant, dans cet environnement virtuel, vous pouvez utiliser pip pour installer des modules pour ce projet.
Laissez cet env virtuel, juste
la source