Est-ce que` anaconda ' crée une variable PYTHONPATH distincte pour chaque nouvel environnement?

je commence à travailler avec la distribution Python Anaconda de Continuum.io to do scipy work.

J'ai réussi à faire démarrer Anaconda, mais je ne sais pas si Anaconda crée une nouvelle variable d'environnement PYTHONPATH 151990920 "pour chaque nouvel environnement qu'elle crée , ou si elle s'appuie sur le système commun PYTHONPATH .

Je n'ai pu trouver aucune information à ce sujet dans la documentation.

de plus , quand j'ai fait un printenv , Je n'ai pas vu de variable PYTHONPATH dans l'environnement nouvellement créé-bien que j'ai trouvé quelques nouvelles variables d'environnement créées par anaconda.

le mieux que je puisse trouver est Qu'Anaconda a ajouté quelques répertoires Anaconda et le nouveau répertoire d'environnement à la tête de la variable PATH --mais cela n'isole pas nécessairement le nouveau paquet de l'environnement système mais il est proche.

personne Ne sait la réponse à cette question ou trouve un moyen de régler ce souci?

32
demandé sur CheTesta 2013-06-30 07:33:32

2 réponses

non, la seule chose qui doit être modifiée pour un environnement Anaconda est le chemin (pour qu'il obtienne le bon Python de l'environnement bin/ directory, ou Scripts\ sous Windows).

la façon dont les environnements Anaconda fonctionnent est qu'ils relient tout ce qui est installé dans l'environnement. À toutes fins pratiques, cela signifie que chaque environnement est une installation complètement séparée de Python et de tous les paquets. En utilisant des liens durs, c'est fait de manière efficace. Ainsi, il n'y a pas besoin de jouer avec PYTHONPATH parce que le binaire Python dans l'environnement cherche déjà les paquets-sites dans l'environnement, et la lib de l'environnement, et ainsi de suite.

24
répondu asmeurer 2013-07-01 14:49:53

Anaconda n'utilise pas le PYTHONPATH . Il faut cependant noter que si le PYTHONPATH est défini, il peut être utilisé pour charger une bibliothèque qui n'est pas dans l'environnement anaconda. C'est pourquoi, avant d'activer un environnement, il pourrait être bon de faire un

unset PYTHONPATH

par exemple, ce PYTHONPATH pointe vers une fausse lib pandas:

export PYTHONPATH=/home/john/share/usr/anaconda/lib/python
source activate anaconda-2.7
python
>>>> import pandas as pd
/home/john/share/usr/lib/python/pandas-0.12.0-py2.7-linux-x86_64.egg/pandas/hashtable.so: undefined symbol: PyUnicodeUCS2_DecodeUTF8
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/john/share/usr/lib/python/pandas-0.12.0-py2.7-linux-x86_64.egg/pandas/__init__.py", line 6, in <module>
    from . import hashtable, tslib, lib
ImportError: /home/john/share/usr/lib/python/pandas-0.12.0-py2.7-linux-x86_64.egg/pandas/hashtable.so: undefined symbol: PyUnicodeUCS2_DecodeUTF8

désactiver le PYTHONPATH empêche le mauvais pandas lib d'être chargé:

unset PYTHONPATH
source activate anaconda-2.7
python
>>>> import pandas as pd
>>>>
20
répondu inodb 2015-08-05 19:24:28