我想在Python virtualenv中安装一些npm软件包。例如:
到目前为止,我只找到了在virtualenv中安装这些软件的复杂方法:为它们创建一个python包。
是否有更简单的方法可以在Python virtualenv中安装npm软件包?
答案 0 :(得分:9)
NPM和pip彼此无关,因此您将无法在virtualenv中安装NPM包。
但是:NPM installs packages in ./node_modules
。
因此,如果您创建了virtualenv并在其中安装了npm模块
virtualenv myproj
cd myproj
source bin/activate
npm install pdfjs-dist jquery-ui
您最终会得到myproj/node_modules
中的节点包,这与“在virtualenv中安装NPM”非常接近。
答案 1 :(得分:7)
您可以使用nodeenv在python virtuaenv上安装NPM软件包。
source ./bin/activate
pip install nodeenv
nodeenv -p
要测试是否有效:
npm install -g npm
npm -v
来源:
https://pypi.org/project/nodeenv/
https://calvinx.com/2013/07/11/python-virtualenv-with-node-environment-via-nodeenv/
答案 2 :(得分:3)
就像@Josir所建议的那样,我过去曾经使用nodeenv
,但是当我想将节点模块放入项目的venv
文件夹中时遇到一个问题,如{{3}中所述}。
简而言之,将package.json
放入venv
会导致无法使用npx ...
,除非它是从venv
文件夹运行的,而将package.json
放入venv/lib
并从那里运行npm install
可以使用项目中任何文件夹的npx ...
。
这是由于将NODE_PATH
环境变量设置为<myproject>/venv/lib/node_modules
。
我创建了一个脚本来自动执行此操作,
python -m venv venv
source venv/bin/activate
pip install requirements.txt
cp package.json venv/lib
cd venv/lib
nodeenv -p
npm install --no-optional