【发布时间】:2018-10-01 21:18:31
【问题描述】:
目前,我在本地使用了一些(未发布的)Python 包,我将它们与 Linux 上的 Bash 脚本一起安装(用于开发目的)到激活的(否则为“空”)虚拟环境中,方式如下:
cd /root/of/python/package
pip install -r requirements_python.txt # includes "nodeenv"
nodeenv -p # pulls node.js and integrates it into my virtual environment
npm i -g npm # update npm ...
cat requirements_node.txt | xargs npm install -g
pip install -e .
背景是我有很多node.js依赖,JavaScript CLI脚本,都是我的Python代码调用的。
当前方法的优点:
- 很简单:依赖
nodeenv完成所有必需的管道 - 理论上可以在
setup.py和subprocess.Popen等内实现
当前方法的缺点:
- 仅支持 Bash 的类 Unix 平台
- “很难”分发我的包,比如在 PyPI 上
- 需要虚拟环境
- 如果全局安装软件包,可能会产生“有趣”的副作用
- 可能会干扰当前虚拟环境中 nodeenv 的现有配置/“部署”
为 Python 包定义 node.js 依赖项并使其可发布的规范(如果有的话)或只是一种理智的、潜在的跨平台方法是什么?
为什么这个问题甚至是相关的? JavaScript 不仅仅用于 Web 开发(不再适用)。还有一些有趣的(相关的)数据处理工具。如果您不想错过/忽略它们,那么欢迎来到这种特殊形式的地狱。
我最近遇到了calmjs,这似乎是我正在寻找的。我还没有对它进行太多实验,它似乎也是一个相对年轻的项目。
我创建了一个issue there asking a similar question。
编辑(1):有趣的资源:@987654323@
编辑(2):我创建了一个issue against nodeenv,询问我如何使项目依赖它。
【问题讨论】:
-
天哪,你为什么要这样对自己?
-
@LukeMlsna 有时我们别无选择,在以互操作性的名称(或名称)构建事物时。
-
@s-m-e 您正在使用什么 Python 中不存在的 Node 算法或功能?另外,你考虑过 Docker 吗?你可以只运送一个安装了 JS + Python 依赖项的容器......
-
@duhaime Docker 无疑是一种选择,但假设您的用户没有运行 Docker 容器的选项,那么它的重量并不轻或易于部署。
-
@LukeMlsna 我也在问自己同样的事情;)
标签: javascript python node.js npm python-packaging