在Python virtualenv中安装npm包

问题描述 投票:9回答:3

我想在Python virtualenv中安装一些npm软件包。例如:

到目前为止,我只找到了在virtualenv中安装这些东西的复杂方法:为它们创建一个python包。

有没有更简单的方法来在Python virtualenv中安装npm软件包?

python npm installation pip
3个回答
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”非常接近。


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/


3
投票

正如@Josir建议的那样,我过去使用过nodeenv,但是当我想在项目的venv文件夹中包含节点模块时遇到问题,如this question中所述。

总之,在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
© www.soinside.com 2019 - 2024. All rights reserved.