在Python虚拟环境中安装npm包

13
3个回答

17

我唯一看到的问题是你需要关注两个锁定文件和两个包文件,有没有一种方法可以在pipenv安装后运行npm install来获取node的软件包? - ekiim
这是一个很棒的解决方案。谢谢你提供它。 - NYCeyes

11

NPM和pip彼此无关,因此您将无法在虚拟环境中安装NPM包。

然而:NPM会将包安装在./node_modules中。

因此,如果您在其中创建了一个虚拟环境并安装了npm模块

virtualenv myproj
cd myproj
source bin/activate
npm install pdfjs-dist jquery-ui

最终会在myproj/node_modules中得到Node Packages,这是最接近“在virtualenv内安装NPM”的方法。


就是这样。如果你的项目同时使用了Javascript和Python,那么你需要为Python包创建一个virtualenv环境,为Node模块创建一个node_modules环境。 - Kos

4

如@Josir所建议,我过去曾经使用nodeenv,但当我想要将节点模块放在项目的venv文件夹中时(如此问题中所解释的那样),遇到了问题。

简而言之,在venv中放置一个package.json会导致无法使用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

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