Как установить lessc и nodejs в Python virtualenv? - PullRequest
15 голосов
/ 24 января 2012

Я бы хотел установить скрипт nodejs (lessc) в virtualenv.

Как мне это сделать?

Спасибо

Натиму

Ответы [ 4 ]

15 голосов
/ 24 ноября 2013

Мне нравится короткий ответ, он порекомендовал использовать nodeenv, см .: существует ли виртуальная среда для node.js?

Я следовал этому руководству: http://calvinx.com/2013/07/11/python-virtualenv-with-node-environment-via-nodeenv/

Все, что мне нужно было сделать самому:

. ../bin/activate # switch to my Python virtualenv first
pip install nodeenv # then install nodeenv (nodeenv==0.7.1 was installed)
nodeenv --python-virtualenv # Use current python virtualenv
npm install -g less # install lessc in the virtualenv
14 голосов
/ 24 января 2012

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

Установить nodejs

wget http://nodejs.org/dist/v0.6.8/node-v0.6.8.tar.gz
tar zxf node-v0.6.8.tar.gz
cd node-v0.6.8/
./configure --prefix=/absolute/path/to/the/virtualenv/
make
make install

Установить npm (Node Package)Менеджер)

/absolute/path/to/the/virtualenv/bin/activate
curl https://npmjs.org/install.sh | sh

Установить lesscss

npm install less -g

Когда вы активируете свой virtualenv, вы можете использовать lessc

10 голосов
/ 23 июля 2012

Я создал bash-скрипт для автоматизации решения Natim.

Убедитесь, что ваш Python virtualenv активен, и просто запустите скрипт.NodeJS, NPM и lessc будут загружены и установлены в вашем virtualenv.

http://pastebin.com/wKLWgatq

#!/bin/sh
#
# This script will download NodeJS, NPM and lessc, and install them into you Python
# virtualenv.
#
# Based on a post by Natim:
# /7835401/kak-ustanovit-lessc-i-nodejs-v-python-virtualenv

NODEJS="http://nodejs.org/dist/v0.8.3/node-v0.8.3.tar.gz"

# Check dependencies
for dep in gcc wget curl tar make; do
    which $dep > /dev/null || (echo "ERROR: $dep not found"; exit 10)
done

# Must be run from virtual env
if [ "$VIRTUAL_ENV" = "" ]; then
    echo "ERROR: you must activate the virtualenv first!"
    exit 1
fi

echo "1) Installing nodejs in current virtual env"
echo

cd "$VIRTUAL_ENV"

# Create temp dir
if [ ! -d "tmp" ]; then
    mkdir tmp
fi
cd tmp || (echo "ERROR: entering tmp directory failed"; exit 4)

echo -n "- Entered temp dir: "
pwd

# Download
fname=`basename "$NODEJS"`
if [ -f "$fname" ]; then
    echo "- $fname already exists, not downloading"
else
    echo "- Downloading $NODEJS"
    wget "$NODEJS" || (echo "ERROR: download failed"; exit 2)
fi

echo "- Extracting"
tar -xvzf "$fname" || (echo "ERROR: tar failed"; exit 3)
cd `basename "$fname" .tar.gz` || (echo "ERROR: entering source directory failed"; exit 4)

echo "- Configure"
./configure --prefix="$VIRTUAL_ENV" || (echo "ERROR: configure failed"; exit 5)

echo "- Make"
make || (echo "ERROR: build failed"; exit 6)

echo "- Install "
make install || (echo "ERROR: install failed"; exit 7)


echo
echo "2) Installing npm"
echo
curl https://npmjs.org/install.sh | sh || (echo "ERROR: install failed"; exit 7)

echo
echo "3) Installing lessc with npm"
echo
npm install less -g || (echo "ERROR: lessc install failed"; exit 8)

echo "Congratulations! lessc is now installed in your virtualenv"
3 голосов
/ 04 мая 2012

Я предоставлю свое общее решение для работы с Gems и NPM в рамках поддержки virtualenv Gems и Npm, которое можно настроить с помощью настроек env: GEM_HOME и npm_config_prefix

Вы можете вставить фрагмент ниже в свойСкрипт postactivate или activate (более важно, используете ли вы virtualenvwrapper или нет)

export GEM_HOME="$VIRTUAL_ENV/lib/gems"
export GEM_PATH=""
PATH="$GEM_HOME/bin:$PATH"
export npm_config_prefix=$VIRTUAL_ENV
export PATH

Теперь внутри вашего virtualenv будут установлены все библиотеки, установленные через gem install или npm -g installв вашем virtualenv и двоичном коде, добавленном в PATH, если вы используете virtualenvwrapper, вы можете сделать изменение глобальным для всех ваших virtualenv, если вы измените postactivate, живущий внутри вашего $VIRTUALENVWRAPPER_HOOK_DIR

Это решение нене рассматривается установка nodejs внутри virtualenv, но я думаю, что лучше делегировать эту задачу в систему упаковки (apt, yum, brew ..) и установить node и npm глобально

Редактировать:

Я недавно создал 2 плагина для virtualenvwrapper, чтобы сделать это автоматически.Существует один для драгоценных камней и npm:

http://pypi.python.org/pypi/virtualenvwrapper.npm

http://pypi.python.org/pypi/virtualenvwrapper.gem

...