Я работаю над кластером, и кластер уже имеет на нем установку python.Поддержание действительно независимой установки Python
Но, как и мои отношения с R, я хотел бы поддерживать локальную независимую установку Python. Это для меня похоже на то, что авторы никогда не предполагали, что питон будет.
Я установил python с тегом --prefix, а позже получил ошибку от pip при установке пакетов на локальную установку, поскольку локальная установка была источником пакетов из определенной папки сервера /usr/lib/pythonX.Y/dist- пакеты /. Легким решением было бы перекомпилировать мою версию, чтобы она использовала ту же кодировку USC4, что и общесистемная установка.
Но я не хочу этого делать, поскольку я хотел бы быть свободным от различных неконтролируемых переменных, которые поражают наши кластерные ОС, которые приводят к инциденту, когда вся ОС должна быть обновлена.
sys.path является виновником, который создает этот путь /usr/lib/pythonX.Y/, используя os.path в файле site.py, а затем импортирует его.
Как я могу окончательно удалить этот путь из моей установки python? предпочтительно во время компиляции самого Python. Я только прибегаю к модификации site.py после того, как я знаю, что для меня нет другого способа сделать это.
UPDATE:
Так что теперь я перешел к использованию pyenv. Но я не думаю, что это оптимальное решение проблемы. Мне бы очень хотелось узнать, почему это прямое решение было принято авторами python для получения исходных общесистемных путей к любой локальной установке python.
UPDATE 12-04-2016:
я натыкался Anaconda, и теперь я счастлив сказать, что я нашел решение, т.е.
, где я могу поддерживать установку питона, который, если это предусмотрено со всеми пакетами в локальной установке сначала выберите эти пакеты и их зависимости из локальной установки, а затем, наконец, просмотрите системные пути для других пакетов. Это отвечает первой проблеме, которая у меня была
sys.path сначала определяет глобальные общесистемные пути библиотеки, а затем пути локальной библиотеки. Но в Anaconda sys.path выбирает глобальные системные пути lib в качестве второго приоритетного места для просмотра.
import sys
from pprint import pprint as p
p(sys.path) ['', '/home/kpal/anaconda2/bin', '/usr/lib/pymodules/python2.7', '/home/kpal/.local/lib/python2.7/site-packages/cooler-0.3.0-py2.7.egg', '/home/kpal/.local/lib/python2.7/site-packages/hiclib-0.0.0-py2.7-linux-x86_64.egg', '/home/kpal/.local/lib/python2.7/site-packages/mirnylib-0.0.0-py2.7-linux-x86_64.egg', '/home/kpal/anaconda2/lib/python27.zip', '/home/kpal/anaconda2/lib/python2.7', '/home/kpal/anaconda2/lib/python2.7/plat-linux2', '/home/kpal/anaconda2/lib/python2.7/lib-tk', '/home/kpal/anaconda2/lib/python2.7/lib-old', '/home/kpal/anaconda2/lib/python2.7/lib-dynload', '/home/kpal/.local/lib/python2.7/site-packages', '/home/kpal/anaconda2/lib/python2.7/site-packages/Sphinx-1.3.5-py2.7.egg', '/home/kpal/anaconda2/lib/python2.7/site-packages/setuptools-20.3-py2.7.egg', '/home/kpal/anaconda2/lib/python2.7/site-packages', '/home/kpal/anaconda2/lib/python2.7/site-packages/IPython/extensions', '/home/kpal/.ipython']
с помощью менеджера пакетов condas анаконда, я могу установить почти все пакеты, которые мне нужно для моей работы (Научные данные/номер хруст). Если я не могу просто сделать
python install "package" --user
и которые будут установлены под /home/user/.local/
. Если он никогда не был найден, это означает, что его нет даже под глобальным определением.
Я использую pyenv для достижения этого. Моя проблема с python заключается не в том, как я поддерживаю отдельные установки, а в том, почему мне приходится обходиться с родным поведением python, когда многие другие языки программирования отлично согласны с тем, что они существуют независимо от общесистемной установки. – FoldedChromatin