2016-03-01 3 views
0

У меня установлен anaconda и не хочу использовать системный python и его модули.версия python и python sys.path

Предполагается, что anaconda запускает python в независимой среде. Тем не менее,

$ which python 
/home/user/anaconda/bin/python 

$ python --version 
Python 2.7.3 

$ ~/anaconda/bin/python --version 
Python 2.7.11 :: Anaconda 2.5.0 (64-bit) 

Как вы можете видеть, python связан с системной питона версии 2.7.3, хотя which указывает на то, что он указал на анаконды питона.

$ python 
Python 2.7.3 (default, Mar 13 2014, 11:03:55) 
[GCC 4.7.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import sys; 
>>> from pprint import pprint as p 
>>> p(sys.path) 
['', 
'/soft/python/lib/python2.7/site-packages/distribute-0.6.28-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/mock-1.0.1-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/nose-1.3.1-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/pyparsing-2.0.1-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/tornado-3.2-py2.7-linux-x86_64.egg', 
'/soft/python/lib/python2.7/site-packages/python_dateutil-2.2-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/six-1.6.1-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/backports.ssl_match_hostname-3.4.0.2-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/diffpy.pdfgui-1.0_r6798_20120508-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/diffpy.utils-1.1-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/diffpy.pdffit2-1.0_r6773_20111122-py2.7-linux-x86_64.egg', 
'/soft/python/lib/python2.7/site-packages/diffpy.Structure-1.2-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/diffpy.pdfgetx-1.0_r2152_20130314-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/rasterstats-0.7.0-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/rasterio-0.24.1-py2.7-linux-x86_64.egg', 
'/soft/python/lib/python2.7/site-packages/Shapely-1.5.9-py2.7-linux-x86_64.egg', 
'/soft/python/lib/python2.7/site-packages/enum34-1.0.4-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/snuggs-1.3.1-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/cligj-0.2.0-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/affine-1.2.0-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/click-4.1-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/progress-1.2-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/matplotlib-1.4.3-py2.7-linux-x86_64.egg', 
'/soft/python/lib/python2.7/site-packages/h5py-2.5.0-py2.7-linux-x86_64.egg', 
'/soft/python/lib/python2.7/site-packages', 
'/home/user', 
'/usr/lib/python2.7', 
'/usr/lib/python2.7/plat-linux2', 
'/usr/lib/python2.7/lib-tk', 
'/usr/lib/python2.7/lib-old', 
'/usr/lib/python2.7/lib-dynload', 
'/usr/local/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages/PIL', 
'/usr/lib/python2.7/dist-packages/gtk-2.0', 
'/usr/lib/pymodules/python2.7'] 

Естественно, что в пути python существует много системного пути. Но для anaconda python,

$ ~/anaconda/bin/python 
Python 2.7.11 |Anaconda 2.5.0 (64-bit)| (default, Dec 6 2015, 18:08:32) 
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2 
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://anaconda.org 
>>> 
>>> import sys 
>>> from pprint import pprint as p 
>>> p(sys.path) 
['', 
'/soft/python/lib/python2.7/site-packages/distribute-0.6.28-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/mock-1.0.1-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/nose-1.3.1-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/pyparsing-2.0.1-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/tornado-3.2-py2.7-linux-x86_64.egg', 
'/soft/python/lib/python2.7/site-packages/python_dateutil-2.2-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/six-1.6.1-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/backports.ssl_match_hostname-3.4.0.2-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/diffpy.pdfgui-1.0_r6798_20120508-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/diffpy.utils-1.1-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/diffpy.pdffit2-1.0_r6773_20111122-py2.7-linux-x86_64.egg', 
'/soft/python/lib/python2.7/site-packages/diffpy.Structure-1.2-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/diffpy.pdfgetx-1.0_r2152_20130314-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/rasterstats-0.7.0-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/rasterio-0.24.1-py2.7-linux-x86_64.egg', 
'/soft/python/lib/python2.7/site-packages/Shapely-1.5.9-py2.7-linux-x86_64.egg', 
'/soft/python/lib/python2.7/site-packages/enum34-1.0.4-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/snuggs-1.3.1-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/cligj-0.2.0-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/affine-1.2.0-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/click-4.1-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/progress-1.2-py2.7.egg', 
'/soft/python/lib/python2.7/site-packages/matplotlib-1.4.3-py2.7-linux-x86_64.egg', 
'/soft/python/lib/python2.7/site-packages/h5py-2.5.0-py2.7-linux-x86_64.egg', 
'/soft/python/lib/python2.7/site-packages', 
'/home/user', 
'/home/user/anaconda/lib/python27.zip', 
'/home/user/anaconda/lib/python2.7', 
'/home/user/anaconda/lib/python2.7/plat-linux2', 
'/home/user/anaconda/lib/python2.7/lib-tk', 
'/home/user/anaconda/lib/python2.7/lib-old', 
'/home/user/anaconda/lib/python2.7/lib-dynload', 
'/home/user/anaconda/lib/python2.7/site-packages', 
'/home/user/anaconda/lib/python2.7/site-packages/Sphinx-1.3.5-py2.7.egg', 
'/home/user/anaconda/lib/python2.7/site-packages/cryptography-1.0.2-py2.7-linux-x86_64.egg', 
'/home/user/anaconda/lib/python2.7/site-packages/flake8-2.5.1-py2.7.egg', 
'/home/user/anaconda/lib/python2.7/site-packages/mccabe-0.3.1-py2.7.egg', 
'/home/user/anaconda/lib/python2.7/site-packages/setuptools-20.1.1-py2.7.egg'] 

По-прежнему много системного пути.

Если я фильтровать sys.path по

sys.path = filter(lambda (x): x.startswith('/home/user/anaconda'), sys.path) путь питона чист, но там будет много ImportErrors.

Я экспортировал $PYTHONPATH=.

ответ

1
  1. Выполнение type python для проверки псевдонимов (или функций).
  2. Выполнение hash -r, чтобы обновить хэш-таблицу $PATH, а затем попробуйте which.

В общем, вы, вероятно, лучше использовать type чем which, так как первый является оболочкой встроенной и имеет доступ к оболочечных PATH хэш-таблицы, функции и псевдонимы.

  • Если вы специально хотите взглянуть на внешнюю программу (как which делает), вы можете использовать

    type -p 
    

    Другими словами, это более надежный which.

  • Если вы хотите, чтобы найти все расположение исполняемых команд с заданным именем, вы можете использовать

    type -a 
    
+0

Удивительный !!! Это сложно. 'type python' дает' python aliased 'экспортировать PYTHONPATH =/soft/python/lib/python2.7/site-packages: $ {PYTHONPATH};/usr/bin/python''. Я переоцениваю это. Но почему есть еще несколько системных путей, даже я запускаю '/ home/user/anaconda/bin/python' напрямую? – Lee

+0

Я понял. Я запускаю 'python' и' PYTHONPATH' был заражен. – Lee