簡體   English   中英

如何在Python virtualenv中安裝lessc和nodejs?

[英]How to install lessc and nodejs in a Python virtualenv?

我想將一個nodejs腳本(lessc)安裝到virtualenv中。

我怎樣才能做到這一點 ?

謝謝

Natim

我喜歡shorrty的回答,他建議使用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

這是我到目前為止所使用的,但我認為它可能會被優化。

安裝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(節點包管理器)

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

安裝lesscss

npm install less -g

當你激活virtualenv時,你可以使用lessc

我創建了一個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:
# 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"

我將提供我的通用解決方案,以便在virtualenv Gems和Npm支持中使用Gems和npm_config_prefix通過env設置進行自定義: GEM_HOMEnpm_config_prefix

你可以在你的postactivateactivate腳本中粘貼下面的片段(如果你使用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 installnpm -g install gem install lib將被安裝在你的virtualenv和你的PATH添加的二進制文件如果你使用virtualenvwrapper你可以修改你的所有virtualenv的全局更改如果你修改postactivate生活在里面你的$VIRTUALENVWRAPPER_HOOK_DIR

這個解決方案不包括在virtualenv中安裝nodejs,但我認為最好將此任務委托給打包系統(apt,yum,brew ..)並在全局安裝node和npm

編輯:

我最近為virtualenvwrapper創建了2個插件來自動執行此操作。 有一個寶石和npm:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM