2012-01-24 2 views
15

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

Как я могу это сделать?

Благодаря

Natim

+1

Можете ли вы предоставить нам некоторые фактические указатели: что такое lessc и где его можно найти? Также я не понимаю, как virtualenv и node.js mix: virtualenv для Python, а node.js - платформа на основе JavaScript. – jsalonen

+0

'lessc': http://lesscss.org/ - Virtualenv предназначен для среды python и предоставляет некоторые исполняемые файлы в среде, я хотел бы установить lessc в этой среде. – Natim

ответ

15

Мне нравится ответ shorrty, он рекомендовал использовать nodeenv см: is there an virtual environment for 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

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

Установите 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 

Установка НПМ (Node Package Manager)

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

Установите lesscss

npm install less -g 

При активации virtualenv вы можете использовать lessc

+0

npm no создать символическую ссылку? – JuanPablo

+1

Это швы, что это не сработало. – Natim

+3

с 'sudo npm install less -g' двоичный в установленном в'/usr/local/bin/lessc' – JuanPablo

3

Я предоставлю мое общее решение для работы с драгоценными камнями и НПМ внутри virtualenv Gems и поддержку НПМ быть настроены через настройки 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 все установленные через LIBS gem install или npm -g install будут установлены в вашем virtualenv и бинарный встраивается в PATH , если вы используете virtualenvwrapper вы можете внести изменения глобального все ваши virtualenv если изменить postactivate живет внутри $VIRTUALENVWRAPPER_HOOK_DIR

Данное решение не распространяется установка nodejs внутри virtualenv, но я думаю, что это лучше, чтобы делегировать эту задачу к системе упаковки (уместно, ни, заварной ..) и установить узел и НПЕ глобально

Edit:

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

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

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

10

Я создал Баш скрипт для автоматизации решения 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: 
# http://stackoverflow.com/questions/8986709/how-to-install-lessc-and-nodejs-in-a-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" 
+0

Если вы используете buildout, вы можете посмотреть https://pypi.python.org/pypi/rubygemsrecipe – Natim

+0

Я создал версию python: [Загрузить и установить nodejs в текущем виртуальном виртуальном питоне] (https: //github.com/wonderbeyond/venvgetnodejs) – wonder