如何在Python虚拟环境中安装lessc和nodejs?

15

我想在虚拟环境中安装一个nodejs脚本(lessc)。

我该怎么做?

谢谢。

Natim


1
你能给我们提供一些实际的指针吗:lessc是什么,它在哪里可以找到?另外,我不明白virtualenv和node.js如何混合使用:virtualenv是为Python设计的,而node.js是基于JavaScript的平台。 - jsalonen
lessc: http://lesscss.org/ - Virtualenv 是用于 Python 环境的,它在环境中提供了一些可执行文件,我想在这个环境中安装 lessc - Natim
4个回答

15

14

这是我目前使用的代码,但我认为它可以进行优化。

安装Node.js

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 包管理器)

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

安装 lesscss

npm install less -g

当你激活虚拟环境后,你就可以使用lessc


npm 无法创建符号链接吗? - JuanPablo
3
通过sudo npm install less -g安装二进制文件到/usr/local/bin/lessc - JuanPablo

10

我创建了一个Bash脚本来自动化Natim的解决方案。

确保您的Python虚拟环境处于活动状态,然后只需运行该脚本。NodeJS、NPM和Lessc将被下载并安装到您的虚拟环境中。

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:
# https://dev59.com/cmox5IYBdhLWcg3ww3AD

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"

如果您正在使用buildout,可以查看https://pypi.python.org/pypi/rubygemsrecipe。 - Natim
我创建了一个Python版本:在当前Python虚拟环境中下载和安装Node.js - wonder

3
我将提供一种通用的解决方案,以便在虚拟环境中使用Gems和NPM。可以通过环境设置GEM_HOMEnpm_config_prefix来自定义Gems和Npm支持。您可以将以下代码片段粘贴到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

现在,在你的虚拟环境中,通过gem installnpm -g install安装的所有库都将安装在你的虚拟环境中,并添加到你的PATH中。 如果你正在使用virtualenvwrapper,你可以通过修改位于$VIRTUALENVWRAPPER_HOOK_DIR内的postactivate来使这个更改对所有虚拟环境生效。
这个解决方案不包括在虚拟环境内安装nodejs,但我认为最好将此任务委托给打包系统(apt,yum,brew..)并全局安装node和npm。
编辑:
我最近创建了两个virtualenvwrapper插件,用于自动执行此操作。其中一个是gem插件,另一个是npm插件:

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接