web-dev-qa-db-fra.com

Définition permanente du chemin Python pour Anaconda dans Cygwin

J'essaie d'installer Anaconda sur mon ordinateur Windows 7. J'utilise souvent cygwin avec to pour mon travail en ligne de commande, et j'aimerais gérer Anaconda à partir de là. J'ai travaillé à travers le programme d'installation graphique sans aucun problème et vérifié les cases nécessaires pour réinitialiser le chemin d'accès par défaut à cette installation de python. Je vais de l'avant pour vérifier où se trouve python et initialement, je reçois ceci ...

$ which python
/usr/bin/python

De là, le python fonctionne bien ...

$ python
Python 2.7.5 (default, Oct  2 2013, 22:34:09)
[GCC 4.8.1] on cygwin
Type "help", "copyright", "credits" or "license" for more information.

Mais j'essaie de travailler à partir d'anaconda, alors je devrais juste avoir besoin de redéfinir mon chemin ...

$ export PATH=/cygdrive/c/anaconda:$PATH
$ which python
/cygdrive/c/anaconda/python

Et maintenant, je devrais pouvoir y aller, mais quand j’essaie d’entrer dans le langage python, cela ne fonctionne plus.

$ python

Une idée pourquoi cela pourrait se produire? retour prolixe, ci-dessous ...

$ python -v
# installing zipimport hook
import zipimport # builtin
# installed zipimport hook
# C:\anaconda\lib\site.pyc matches C:\anaconda\lib\site.py
import site # precompiled from C:\anaconda\lib\site.pyc
# C:\anaconda\lib\os.pyc matches C:\anaconda\lib\os.py
import os # precompiled from C:\anaconda\lib\os.pyc
import errno # builtin
import nt # builtin
# C:\anaconda\lib\ntpath.pyc matches C:\anaconda\lib\ntpath.py
import ntpath # precompiled from C:\anaconda\lib\ntpath.pyc
# C:\anaconda\lib\stat.pyc matches C:\anaconda\lib\stat.py
import stat # precompiled from C:\anaconda\lib\stat.pyc
# C:\anaconda\lib\genericpath.pyc matches C:\anaconda\lib\genericpath.py
import genericpath # precompiled from C:\anaconda\lib\genericpath.pyc
# C:\anaconda\lib\warnings.pyc matches C:\anaconda\lib\warnings.py
import warnings # precompiled from C:\anaconda\lib\warnings.pyc
# C:\anaconda\lib\linecache.pyc matches C:\anaconda\lib\linecache.py
import linecache # precompiled from C:\anaconda\lib\linecache.pyc
# C:\anaconda\lib\types.pyc matches C:\anaconda\lib\types.py
import types # precompiled from C:\anaconda\lib\types.pyc
# C:\anaconda\lib\UserDict.pyc matches C:\anaconda\lib\UserDict.py
import UserDict # precompiled from C:\anaconda\lib\UserDict.pyc
# C:\anaconda\lib\_abcoll.pyc matches C:\anaconda\lib\_abcoll.py
import _abcoll # precompiled from C:\anaconda\lib\_abcoll.pyc
# C:\anaconda\lib\abc.pyc matches C:\anaconda\lib\abc.py
import abc # precompiled from C:\anaconda\lib\abc.pyc
# C:\anaconda\lib\_weakrefset.pyc matches C:\anaconda\lib\_weakrefset.py
import _weakrefset # precompiled from C:\anaconda\lib\_weakrefset.pyc
import _weakref # builtin
# C:\anaconda\lib\copy_reg.pyc matches C:\anaconda\lib\copy_reg.py
import copy_reg # precompiled from C:\anaconda\lib\copy_reg.pyc
# C:\anaconda\lib\traceback.pyc matches C:\anaconda\lib\traceback.py
import traceback # precompiled from C:\anaconda\lib\traceback.pyc
# C:\anaconda\lib\sysconfig.pyc matches C:\anaconda\lib\sysconfig.py
import sysconfig # precompiled from C:\anaconda\lib\sysconfig.pyc
# C:\anaconda\lib\re.pyc matches C:\anaconda\lib\re.py
import re # precompiled from C:\anaconda\lib\re.pyc
# C:\anaconda\lib\sre_compile.pyc matches C:\anaconda\lib\sre_compile.py
import sre_compile # precompiled from C:\anaconda\lib\sre_compile.pyc
import _sre # builtin
# C:\anaconda\lib\sre_parse.pyc matches C:\anaconda\lib\sre_parse.py
import sre_parse # precompiled from C:\anaconda\lib\sre_parse.pyc
# C:\anaconda\lib\sre_constants.pyc matches C:\anaconda\lib\sre_constants.py
import sre_constants # precompiled from C:\anaconda\lib\sre_constants.pyc
# C:\anaconda\lib\locale.pyc matches C:\anaconda\lib\locale.py
import locale # precompiled from C:\anaconda\lib\locale.pyc
import encodings # directory C:\anaconda\lib\encodings
# C:\anaconda\lib\encodings\__init__.pyc matches C:\anaconda\lib\encodings\__init__.py
import encodings # precompiled from C:\anaconda\lib\encodings\__init__.pyc
# C:\anaconda\lib\codecs.pyc matches C:\anaconda\lib\codecs.py
import codecs # precompiled from C:\anaconda\lib\codecs.pyc
import _codecs # builtin
# C:\anaconda\lib\encodings\aliases.pyc matches C:\anaconda\lib\encodings\aliases.py
import encodings.aliases # precompiled from C:\anaconda\lib\encodings\aliases.pyc
import operator # builtin
# C:\anaconda\lib\functools.pyc matches C:\anaconda\lib\functools.py
import functools # precompiled from C:\anaconda\lib\functools.pyc
import _functools # builtin
import _locale # builtin
# C:\anaconda\lib\encodings\cp1252.pyc matches C:\anaconda\lib\encodings\cp1252.py
import encodings.cp1252 # precompiled from C:\anaconda\lib\encodings\cp1252.pyc
# zipimport: found 13 names in C:\anaconda\lib\site-packages\runipy-0.1.0-py2.7.Egg
# zipimport: found 144 names in C:\anaconda\lib\site-packages\setuptools-3.6-py2.7.Egg
Python 2.7.7 |Anaconda 2.0.1 (64-bit)| (default, Jun 11 2014, 10:40:02) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and htt

Un autre problème (éventuellement lié) que je rencontre est la nécessité de réinitialiser le chemin chaque fois que je ferme/ouvre cygwin. J'ai entré le texte suivant dans .bashrc et .profile pour essayer de définir le chemin de manière permanente:

# Set path to python from anaconda install
export PATH=/cygdrive/c/anaconda:$PATH

Après avoir ouvert et fermé cygwin, je retourne à:

$ which python
/usr/bin/python

Cela pourrait-il être lié à la définition de certaines variables d'environnement système?

25
thomasshouler

Pour utiliser le shell Python interactif dans Cygwin, j'utilise l'option -i.

Pour l'obtenir depuis l'installation d'Anaconda, j'ai utilisé les étapes suggérées ci-dessus:

$ export PATH=/cygdrive/c/anaconda:$PATH
$ which python
/cygdrive/c/anaconda/python

Ensuite, je lance python dans Cygwin avec l'option -i:

$ python -i
Python 2.7.8 |Anaconda 2.1.0 (64-bit)| (default, Jul  2 2014, 15:12:11) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
Anaconda is brought to you by Continuum Analytics.
Please check out: http://continuum.io/thanks and https://binstar.org
>>>>

Les bibliothèques fonctionnent également bien. Par exemple, la bibliothèque de pandas (qui a été installée via Anaconda) peut maintenant être importée.

>>>> import pandas
>>>> pandas.DataFrame
<class 'pandas.core.frame.DataFrame'>

Maintenant pour rendre ce permanent permanent, j'ai ajouté le chemin dans mon fichier bashrc:

$ echo 'export PATH=/cygdrive/c/anaconda:$PATH' >> .bashrc
$ source .bashrc
$ which python
/cygdrive/c/anaconda/python

J'espère que ça aide.

27
SchizoBean

Chemin

Concernant votre problème de chemin, voir Installation d’Anaconda à utiliser avec Windows sur la façon de le résoudre. Alternativement, vous pouvez simplement exécuter /cygdrive/c/Anaconda/python.exe pour démarrer le python Anaconda/Windows et laisser la valeur standard python pointant vers la version cygwin.

Notez que quelques-unes des suggestions données sur Internet incluent également la modification nécessaire de PYTHONPATH: si vous utilisez le python anaconda/windows, vous souhaitez également les bibliothèques anaconda python. Les modules binaires tels que numpy planteront ou se conduiront mal si vous mélangez les choses. Le moyen le plus simple de vérifier cela consiste à installer dans cygwin un module dont vous n’avez pas besoin dans Conda et à vérifier si vous pouvez l’importer depuis anaconda python. Si vous le pouvez, votre chemin est mauvais. 

Anaconda python ajoutera automatiquement c:\Anconda à votre PYTHONPATH, mais si vous le configurez pour servir les bibliothèques python CYGWIN, celles-ci se trouveront avant les bibliothèques Anaconda. Essayer

import sys
sys.path

Terminal

Cependant, il s’agit également d’un problème terminal: Anaconda (Windows) python attend un shell Windows et un shell cygwin moderne ressemble à un xterm, donc très différent. Diagnostiquez-le en exécutant python --help; si cela fonctionne mais que python est bloqué, l'invite interactive constitue le problème. Cela signifie que vous pouvez exécuter des programmes python, vous ne pouvez simplement pas interagir avec eux.

Une solution consiste à utiliser le cygwin bash Shell au lieu du cygwin terminal (les deux sont sous le groupe Cygwin dans le menu Démarrer). Elles se ressemblent beaucoup, mais la police dans le bash Shell est moins jolie et vous ne pouvez pas rendre la fenêtre plus large que 80 caractères (comme toutes les autres fenêtres CMD, jamais compris cette "fonctionnalité"). C'est cygwin bash qui s'exécute à l'intérieur d'une fenêtre CMD et votre python anaconda sera interactif. Le cygwin terminal vous donne un shell bash s'exécutant dans un dérivé de PuTTY, qui imite un xterm et ne peut pas être utilisé par anaconda python. 

2
dirkjot

L’interprétation de Cygwin par Conda pose un autre problème. Lorsque vous sourcez le script d'activation pour un environnement, il est ajouté par exemple, par exemple.

/C/Users/Thomas.Harris/AppData/Local/Continuum/Anaconda3/envs/blah
/C/Users/Thomas.Harris/AppData/Local/Continuum/Anaconda3/envs/blah/Library/mingw-w64/bin /C/Users/Thomas.Harris/AppData/Local/Continuum/Anaconda3/envs/blah/Library/usr/bin
/C/Users/Thomas.Harris/AppData/Local/Continuum/Anaconda3/envs/blah/Library/bin
/C/Users/Thomas.Harris/AppData/Local/Continuum/Anaconda3/envs/blah/Scripts 

à votre chemin. Cependant, ces répertoires ne sont pas appropriés dans cygwin.

J'ai corrigé ça avec 

ln -s /cygdrive/c /C

et si vous créez des environnements Conda avec des versions spécifiques de Python, ils devraient fonctionner.

2
TKH

Moi aussi, je rencontrais un problème pour configurer anaconda avec mon système Cygwin/Windows 7. Ce qui a fonctionné était le suivant:

  1. Edité le ~/.bashrc. Ajouter ci-dessous au bas du fichier. 

    export PATH=/cygdrive/c/Anaconda:$PATH

  2. Cela a mis en correspondance le python de Cygwin avec la distribution anaconda comme preuve en entrant which python dans la console de Cygwin. Cependant, lors du lancement de python, cela raccrocherait, me forçant à sortir de la commande. J'ai trouvé que python -i lancera l'interpréteur python interactif sans aucun problème.

2
SciGuyMcQ

Concernant la définition permanente de votre chemin, éditez le fichier .profile dans votre répertoire personnel (c'est un fichier caché).

.profile (les autres noms sont également valables, voir la page de manuel bash) contient des commandes bash. Il est exécuté lorsque bash est lancé en tant que shell de connexion.

Au bas de ce fichier, placez votre commande set path:

export PATH=/cygdrive/c/anaconda:$PATH

En ce qui concerne la raison pour laquelle python est suspendu, veuillez fournir des informations supplémentaires - par exemple, quel est le résultat de python -v?

0
Martin Konecny

Trouvé que pour Anaconda 4, faites:

vim /home/[Username]/.bash_profile

Ajouter à la dernière ligne:

PATH = $ PATH:/cygdrive/c/Utilisateurs/[Nom d'utilisateur]/Anaconda3/Scripts /

Cette solution a fonctionné pour moi car l'anaconda3/bin habituel est introuvable.

0
matthew

Je suis un peu en retard, mais j'avais le même problème que vous @thomasshouler. Essayez d’ajouter la ligne d’exportation ci-dessous à la fin des fichiers .bash_profile et .profile, ainsi que votre fichier .bashrc (comme indiqué ci-dessus). Assurez-vous de "source .bash_profile" etc. pour chaque fichier.

export PATH=/cygdrive/c/anaconda:$PATH
0
Nicholas Fasolt

Une fois le chemin Cygwin mis à jour comme indiqué ci-dessus, vous pouvez également ajouter un alias dans le fichier .bashrc:

alias python='python -i'

Cela fera apparaître l'interpréteur Anaconda python en mode interactif à partir d'une invite Cygwin bash

0
Marc Compere