247 votes

Quelle est la bonne façon d'installer pip, virtualenv, et de les distribuer pour Python?

Petite Question

Arrière-plan

Dans ma réponse à DONC, la question 4314376, j'ai recommandé à l'aide d' ez_setup , de sorte que vous pouvez 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

J'ai d'abord tiré les instructions de Jesse Noller du blog Si vous souhaitez utiliser Python sur Mac?. J'aime l'idée de garder propre le site de paquets, de sorte que la seule autre paquets que j'ai installer il y a virtualenvwrapper et distribute. (J'ai récemment ajouté distribute de ma boîte à outils en raison de ce Python annonce de service public. Pour installer ces deux paquets, j'ai utilisé:

sudo pip install virtualenvwrapper
curl -O http://python-distribute.org/distribute_setup.py
sudo python distribute_setup.py

Pas plus setuptools et easy_install

Pour vraiment suivre que Python annonce de service public, sur une nouvelle Python installer, je voudrais faire le suivant:

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

Glyphe de Réprimande

Dans un commentaire à ma réponse à DONC, la question 4314376, de SORTE que l'utilisateur Glyphe a déclaré:

PAS de. Jamais ne JAMAIS sudo python setup.py install que ce soit. Écrire un ~/.pydistutils.cfg qui met votre pip installation dans ~/.locale ou quelque chose. En particulier les fichiers nommés ez_setup.py ont tendance à sucer vers le bas des versions plus récentes des choses comme setuptools et easy_install, ce qui peut potentiellement briser d'autres choses sur votre système d'exploitation.

Retour à la petite question

Donc Glyphe réponse m'amène à ma question initiale:

173voto

Walker Hale IV Points 1591

Vous pouvez le faire sans installer quelque chose en python lui-même.

Vous n'avez pas besoin de sudo ou de privilèges.

Vous n'avez pas besoin de modifier les fichiers.

Installer virtualenv dans un bootstrap environnement virtuel. Utilisation de l'environnement virtuel pour créer d'autres. Depuis virtualenv est livré avec pip et de distribuer, vous obtenez tout d'une seule installation.

  1. Télécharger virtualenv:
  2. Décompresser l'archive source
  3. Utiliser le décompressé l'archive à créer un propre environnement virtuel. Avec les bonnes options de ligne de commande, l'environnement virtuel contiendra automatiquement pip et de les distribuer.
  4. Installer virtualenv dans l'environnement.
  5. Utilisez ce premier "bootstrap" un environnement pour créer plus de!

Voici un exemple en bash:

# Select current version of virtualenv:
VERSION=1.6.4
# Name your first "bootstrap" environment:
INITIAL_ENV=py-env0
# Options for your first environment:
ENV_OPTS='--no-site-packages --distribute'
# Set to whatever python interpreter you want for your first environment:
PYTHON=$(which python)
URL_BASE=http://pypi.python.org/packages/source/v/virtualenv

# --- Real work starts here ---
curl -O $URL_BASE/virtualenv-$VERSION.tar.gz
tar xzf virtualenv-$VERSION.tar.gz
# Create the first "bootstrap" environment.
$PYTHON virtualenv-$VERSION/virtualenv.py $ENV_OPTS $INITIAL_ENV
# Don't need this anymore.
rm -rf virtualenv-$VERSION
# Install virtualenv into the environment.
$INITIAL_ENV/bin/pip install virtualenv-$VERSION.tar.gz

Maintenant, vous pouvez utiliser votre "bootstrap" un environnement pour créer plus:

# Create a second environment from the first:
$INITIAL_ENV/bin/virtualenv --no-site-packages --distribute py-env1
# Create more:
$INITIAL_ENV/bin/virtualenv py-env2

Aller de noix!

Mise à jour

Les drapeaux --no-site-packges et --distribute sont maintenant les valeurs par défaut (exécution virtualenv -h), de sorte que vous pouvez configurer votre bootstrap avec juste python virtualenv.py bootstrap ou python3 virtualenv.py bootstrap.

20voto

Vinay Sajip Points 41286

Je pense que le Glyphe signifie faire quelque chose comme ceci:

  1. Créer un répertoire ~/.local, si elle n'existe pas déjà.
  2. Dans votre ~/.bashrc, s'assurer qu' ~/.local/bin sur PATH et ~/.local sur PYTHONPATH.
  3. Créer un fichier ~/.pydistutils.cfg qui contient

    [install]
    prefix=~/.local
    

    C'est un standard ConfigParser-format de fichier.

  4. Téléchargez distribute_setup.py et exécutez python distribute_setup.py (n sudo). Si elle se plaint d'un non-existants site-packages répertoire, créer manuellement:

    mkdir -p ~/.local/lib/python2.7/site-packages/

  5. Exécutez which easy_install pour vérifier que ça vient d' ~/.local/bin

  6. Exécutez pip install virtualenv
  7. Exécutez pip install virtualenvwrapper
  8. Créer un virtuel env dossier contenant, dire ~/.virtualenvs
  9. En ~/.bashrc ajouter

    export WORKON_HOME
    source ~/.local/bin/virtualenvwrapper.sh
    

C'est ça, pas d'utilisation d' sudo à tous et de votre environnement Python est en ~/.local, complètement séparée de l'OS, Python. Avertissement: vous ne savez Pas comment compatibles virtualenvwrapper est dans ce scénario, je ne pourrais pas le tester sur mon système :-)

16voto

kermit666 Points 1730

Si vous suivez les étapes conseillé dans plusieurs didacticiels j'ai fait un lien dans cette réponse, vous peut obtenir l'effet désiré, sans quelque peu compliqué "manuel" dans Walker et Vinay réponses. Si vous êtes sur Ubuntu:

sudo apt-get install python-pip python-dev

L'équivalent est réalisé dans OS X en utilisant homebrew installer python (plus de détails ici).

brew install python

Avec pip installé, vous pouvez l'utiliser pour obtenir les paquets restants (vous pouvez omettre sudo dans OS X, alors que vous êtes à l'aide de votre local d'installation de python).

sudo pip install virtualenvwrapper

(ce sont les seuls paquets dont vous avez besoin installé à l'échelle mondiale et je doute qu'il en découdront avec quoi que ce soit au niveau du système d'exploitation. Si vous voulez être super prudent, vous pouvez maintenir la distribution de versions sudo apt-get install virtualenvwrapper)

Remarque: dans Ubuntu 14.04 je reçois quelques erreurs avec pip install, j'ai donc utiliser pip3 install virtualenv virtualenvwrapper et ajouter VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 mon .bashrc/.zshrc le fichier.

Ensuite, vous ajoutez à votre .bashrc le fichier

export WORKON_HOME
source /usr/local/bin/virtualenvwrapper.sh

et la source

. ~/.bashrc

C'est principalement ça. Maintenant, la seule décision est de savoir si vous voulez créer un virtualenv pour inclure le système de paquets

mkvirtualenv --system-site-packages foo

lorsque votre système de paquets n'ont pas à être réinstallé, ils sont liés par un lien symbolique pour le système interprète les versions. Remarque: vous pouvez toujours installer de nouveaux paquets et de mise à niveau existant inclus à partir du système de paquets sans sudo - je l'ai testé et il fonctionne sans la moindre interruption du système d'interprète.

kermit@hocus-pocus:~$ sudo apt-get install python-pandas
kermit@hocus-pocus:~$ mkvirtualenv --system-site-packages s
(s)kermit@hocus-pocus:~$ pip install --upgrade pandas
(s)kermit@hocus-pocus:~$ python -c "import pandas; print(pandas.__version__)"
0.10.1
(s)kermit@hocus-pocus:~$ deactivate
kermit@hocus-pocus:~$ python -c "import pandas; print(pandas.__version__)"
0.8.0

L'alternative, si vous voulez un complètement séparés de l'environnement, est

mkvirtualenv --no-site-packages bar

ou étant donné que c'est l'option par défaut, il suffit de

mkvirtualenv bar

Le résultat est que vous avez un nouveau virtualenv où vous pouvez librement et sudolessly installer vos paquets préférés

pip install flask

12voto

gerrit Points 1588

Python 3.4 onward

Python 3.3, ajoute le venv module, et Python 3.4 ajoute le ensurepip module. Cela rend d'amorçage pip aussi simple que:

python -m ensurepip

Peut-être précédé par un appel à l' venv à le faire à l'intérieur d'un environnement virtuel.

Garanti pip est décrit dans le PEP 453.

10voto

Arik Halperin Points 159

Sur ubuntu:

sudo apt-get install python-virtualenv

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X