Installer et importer des packages de site pour Python 2 et 3 sur Mac

6

J'ai installé brewet puis

brew install python
brew install python3

Installer flaskavecpip

pip install flask

Essayer

python -c 'import flask'

Mais j'ai eu une exception

ImportError: No module named flask

Définir et exporter PYTHONPATH

export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages

Jusqu'ici tout va bien. Mais quand j'ai essayé d'installer un paquet avec pip3Python 3, j'ai reçu un message d'erreur

Your PYTHONPATH points to a site-packages dir for Python 2.x but you are running Python 3.x!
     PYTHONPATH is currently: ":/usr/local/lib/python2.7/site-packages"
     You should `unset PYTHONPATH` to fix this.

Comment utiliser les packages de site, sans l' PYTHONPATHastuce pour faire à la fois pipet pip3utilisable à la fois et Python 2 et Python 3 capable d'importer site-packages?

Flamme gelée
la source
Je ne connais pas très bien brew, mais si vous tapez python (anything)à l'invite du système, je m'attendrais probablement à exécuter le système intégré Python. S'agit-il de la même installation Python dans laquelle vous avez installé le module flask?
nekomatic

Réponses:

5

Vous devriez envisager d'installer pyenv pour cela.

pyenv vous permet de basculer facilement entre plusieurs versions de Python. C'est simple, discret et suit la tradition UNIX d'outils à usage unique qui font bien une chose.

Pour installer, tapez simplement:

$ brew install pyenv

Ajoutez ceci à votre .bash_profile:

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

Une fois installé, utilisez pyenvpour installer les versions de python dont vous avez besoin:

$ pyenv install -l/--list --> List all available versions
$ pyenv install 2.7.6
$ pyenv install 3.3.3

Exécutez cette commande après avoir installé une version de Python:

$ pyenv rehash

Vous pouvez spécifier plusieurs versions PYENV_VERSIONà la fois. Disons que si vous avez deux versions de 2.7.6 et 3.3.3. Si vous préférez 2.7.6 à 3.3.3,

$ pyenv shell 2.7.6 3.3.3
$ pyenv versions
  system
* 2.7.6 (set by PYENV_VERSION environment variable)
* 3.3.3 (set by PYENV_VERSION environment variable)
$ python --version
Python 2.7.6
$ python2.7 --version
Python 2.7.6
$ python3.3 --version
Python 3.3.3
Jherran
la source
J'ai installé pyenv. Pourriez-vous s'il vous plaît donner quelques exemples de la façon de l'utiliser pour résoudre mon problème?
Frozen Flame
Mettre à jour ma réponse.
Jherran
1
Mieux utiliser virtualenv qui fait maintenant partie de python
Mark
@Mark virtualenv crée uniquement des environnements virtuels isolés basés sur des installations d'interpréteur Python existantes. pyenv installe (et gère) de nouveaux environnements et interpréteurs Python, et peut en outre utiliser virtualenv ou venv pour gérer les environnements virtuels de manière cohérente. pyenv ne dépend pas de Python lui-même et peut être utilisé pour amorcer un environnement Python sur une machine «propre».
wjv
4

Pour utiliser à la fois Python 2 et Python 3 sur OS X, évitez d’utiliser le python pré-installé sur Mac .

  1. Installez python avec homebrew :

    brew install python
    brew install python3
    
  2. Modifier /etc/paths:

    /usr/local/bin
    /usr/bin
    /bin
    /usr/local/sbin
    /usr/sbin
    /sbin
    

Assurez-vous que /usr/local/binvient avant /usr/bin. Le premier est utilisé par homebrew et le dernier est l'endroit où l' exécutable python préinstallé sur Mac est installé . Montrez votre PATHpour un double contrôle:

    $ echo $PATH
    /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/X11/bin

Maintenant, je peux installer des paquets avec pip2 et pip3 pour 2 versions de Python séparément.

Flamme gelée
la source
Mon /etc/pathsressemble à ce que vous décrivez. Votre réponse n'a pas fonctionné pour moi.
n1000
@ n1000 echo $PATH; echo $PYTHONPATH. Qu'est ce que tu obtiens?
Frozen Flame le