Enthought Python, Sage или другие (в кластерах Unix) - PullRequest
12 голосов
/ 01 мая 2010

У меня есть доступ к кластеру машин Unix, но у них нет нужного мне программного обеспечения ( numpy , scipy , matplotlib и т. Д.) поэтому я должен установить их самостоятельно (у меня тоже нет прав root, поэтому такие команды, как apt-get или yast не работают).

В худшем случае мне придется собрать их все из исходного кода. Есть ли лучший способ продолжить? Я что-то слышал о Enthought Python и Sage , но не уверен, как лучше идти.

Есть предложения?

Ответы [ 7 ]

9 голосов
/ 01 мая 2010

EPD (Enthought Python Distribution) - это замечательно, но даже для ученых вы можете получить только 32-битную версию бесплатно. Если вы намереваетесь заняться чем-либо, но это не вариант.

Редактировать: с тех пор это изменилось, и 64-битная версия свободно доступна для академического / образовательного использования.

С другой стороны, библиотека Intel MLK действительно имеет значение, и в ней есть много изящных (например, последняя версия mayavi) вещей, которые в противном случае могут быть реальной болью при сборке из исходного кода. Кроме того, как уже говорили другие, вы можете просто распаковать его в свою домашнюю папку и запустить его. Вам не нужен root-доступ.

EPD - отличный вариант, если вам не нужно использовать больше 2 ГБ оперативной памяти, но вам придется заплатить за 64-битные сборки.

Python (x, y) отлично подходит, если вы работаете в Windows, но в любом случае, удачи в поиске предварительно собранных бинарных файлов linux. Они более или менее больше не существуют ... Кажется, что хранилище Ubuntu постоянно недоступно, и я не знаю где-нибудь, чтобы получить предварительно скомпилированный tar-архив для него. Все это может измениться в ближайшем будущем, хотя ... Надеюсь, это изменится, потому что это был бы отличный вариант для вас!

Честно говоря, если вам просто нужны numpy, scipy и matplotlib, их относительно легко собрать из исходного кода (особенно если вы можете обойтись без scipy), и вы всегда можете просто создать свой собственный интерпретатор python и затем использовать easy_install, чтобы не создавать их из исходного кода. Это, конечно, предполагает, что базовая среда сборки (gcc и т. Д.) Уже установлена ​​на машине, которую вы используете ... Во всяком случае, я так и сделал, когда оказался в вашей ситуации ...

Если вы пойдете по этому пути, лучше всего скачать исходный код python и создать свой собственный интерпретатор python, который вы будете использовать для всего. Затем установите setuptools и оставьте easy_install на остальные. (В качестве альтернативы вы можете скачать исходный код для numpy и т. Д., А также собрать и установить их для только что созданного интерпретатора Python.)

Это показывает основную идею, как построить основы (python, numpy, scipy, matplotlib, ipython) в каталоге с именем «pythondist» в текущем рабочем каталоге.

#! /bin/sh

builddir=$(pwd)/pythondist
mkdir -p $builddir/source
cd $builddir/source

wget 'http://python.org/ftp/python/2.6.5/Python-2.6.5.tgz'
wget 'http://pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz#md5=7df2a529a074f613b509fb44feefe74e'
tar -xvzf Python-2.6.5.tgz

# Build python
cd $builddir/source/Python-2.6.5/

# The --prefix argument is the key!
./configure --prefix=$builddir

# Be sure to speed things up with the -j option if you're 
# on a multicore machine (e.g. make -j 4 build for a quadcore)
make build 
make install

# Now install setuptools
cd $builddir/source
tar -xvzf setuptools-0.6c11.tar.gz
cd setuptools-0.6c11/

# The next key is to call this with the python you just built!
$builddir/bin/python setup.py build
$builddir/bin/python setup.py install

# Now just install numpy, scipy, ipython, matplotlib, etc through easy_install
$builddir/bin/easy_install numpy
$builddir/bin/easy_install scipy
$builddir/bin/easy_install matplotlib
$builddir/bin/easy_install ipython

РЕДАКТИРОВАТЬ: Незначительные опечатки в сценарии. Если NumPy или Scipy не установлены должным образом из яйца, см. Примечания по установке.

Этот сценарий в основном предназначен для демонстрации построения независимого Python в вашем домашнем каталоге и предполагает, что в системе, на которой вы строите, уже установлены правильные зависимости, но он, по крайней мере, указывает в правильном направлении.

Если numpy или scipy не собираются должным образом с помощью easy_install, загрузите исходные tar-архивы и попробуйте собрать их оттуда, используя разные аргументы. (По моему опыту, автоматическое определение неправильного компилятора Фортрана в Numpy / Scipy's setup.py) Например,

cd $builddir/source
wget http://sourceforge.net/projects/numpy/files/NumPy/1.4.1/numpy-1.4.1.tar.gz/download
tar -xvzf numpy-1.4.1.tar.gz
cd numpy-1.4.1/
# If you don't specify an action (e.g. "build") this will enter an interactive
# mode to help diagnose problems... See the INSTALL.txt file, too!
$builddir/bin/python setup.py 

Например, в моей системе OpenSUSE 11.2 мне нужно указать "--fcompiler = gnu95" при сборке numpy и scipy, так как у меня установлены и g77, и gfortran. В противном случае все будет работать неправильно.

Тем не менее, в более старой системе RHEL 3 она создается без изменений из easy_install. YMMV, конечно. Удачи!

6 голосов
/ 01 мая 2010

Если вы академик, вы можете бесплатно использовать дистрибутив Enthought . Он поставляется с собственным установщиком и выполняет установку для вас. Это определенно будет проще, чем самостоятельно устанавливать matplotlib и т. Д. На установочном компьютере требования администратора не требуются, поскольку в дистрибутиве имеются собственные двоичные файлы Python. Я использовал это и нашел это простым и удобным.

3 голосов
/ 18 августа 2010

SageMath полностью бесплатен (совместим с GPL), и первой из трех основных целей проекта является независимое распространение математического программного обеспечения с открытым исходным кодом, которое легко установить из исходного кода. (или из двоичного файла), несмотря на его большой размер. Вы должны иметь возможность настроить Sage или что-либо еще в Sage (например, веб-блокнот) без необходимости доступа с правами root.

3 голосов
/ 01 мая 2010

python (x, y) - бесплатный дистрибутив Python, аналогичный EPD (Enthought Python Distribution). Хотя обе включают базовые стандартные библиотеки, есть некоторые различия, поэтому вы должны выяснить, какая из них лучше подходит для ваших нужд. Один интересный аспект EPD заключается в том, что он недавно адаптировал библиотеку Intel MKL , поэтому могут быть преимущества в производительности по сравнению как с pythonxy, так и со стандартным numpy установщиком.

Я не знаю, как эти дистрибутивы работают на Unix-сервере без рут-доступа, это то, что вам, возможно, просто придется попробовать.

С другой стороны, Sage не ориентирован на распространение (см. страницу Википедии ), так что вы не можете его сравнить.

3 голосов
/ 01 мая 2010

Я бы лично пошел на Мудреца, исходя из цены. Основная проблема, с которой вам придется столкнуться - это убедиться, что вы используете вашу установку python для доступа к своим библиотекам, независимо от того, какой пакет python вы используете.

1 голос
/ 03 мая 2010

Вы можете использовать virtualenv , чтобы создать виртуальную изолированную среду без любого доступа, а затем вызвать easy_install для автоматической установки (и компиляции, если необходимо) всех необходимых библиотек в текущем каталоге без прав администратора.

Установка matplotlib с помощью virtualenv

Единственное условие - возможность запускать виртуальную среду, учитывая, что вы ничего не можете установить. Вам нужно будет загрузить его как архив и вызвать virtualenv.py вручную.

1 голос
/ 03 мая 2010

Я пользуюсь Sage ежедневно. Я большой поклонник, но я бы не стал его рекомендовать, если вы не готовы ко многим обновлениям, настройкам и настройке. Пока еще не готово к прайм-тайму.

Если вы готовы приложить все усилия, чтобы он заработал и работал, интерфейс веб-ноутбука просто потрясающий. Я не могу себе представить, что вы могли бы запустить его без root-доступа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...