我想在Python virtualenv中安装一些npm软件包。例如:
到目前为止,我只找到了在virtualenv中安装这些东西的复杂方法:为它们创建一个python包。
有没有更简单的方法来在Python virtualenv中安装npm软件包?
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”非常接近。
您可以使用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/
正如@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