我正在编写软件,允许人们将数学书籍作为网站发布。它主要基于 Python + Flask,但为了处理方程,我使用 MathJax。 MathJax 可以在客户端或服务器端使用(通过 MathJax-node )。在后一种情况下,我必须使用 npm
在我的主要 Python 脚本可以访问的某个地方安装 MathJax-node,然后从脚本中调用它。在前一种情况下,我必须提供 MathJax.js 作为 Assets ,可供客户端使用(目前我使用 Flask 的 send_from_directory
函数)。
我的问题是:在 Python 中处理此类异构依赖项的最佳实践是什么?我的目标是至少在类 unix 系统(Linux 或 MacOS)上使安装过程尽可能简单,前提是 node
和 npm
已经可用。
我可以将我需要的所有 javascript 源放入我的发行版本身,但也许有更好的方法吗?
最佳答案
My question is: what is the best practice of dealing with such heterogenous dependencies in Python?
对于 Node 依赖项,我会在指定所需 Node 依赖项的目录中包含一个 package.json
文件。对于其他语言/包管理器,我也会使用指定依赖项的任何常规方法(例如,为 Ruby 依赖项添加一个 Gemfile)。
Python/Flask 的另一个常见示例是使用 Bower用于静态前端依赖项的包管理器。在这种情况下,依赖项在 bower.json
文件中指定,并且通常被拉入 Flask 的 static
目录中的 bower 文件夹中。
I can just put all the javascript sources I need into my distribution itself, but maybe there's a better way to do it?
一旦您获得了指定依赖项的 package.json
,您就可以获取并安装运行 npm install
所需的所有 Node 依赖项,在我看来,是比在项目中包含 javascript 源代码更优雅的解决方案。
现在您已经有了多个包管理器(例如,除了 npm
用于 Node 依赖项之外,您可能正在使用 pip
作为 Python 依赖项),您可能想制作一个 Makefile 或一些部署/构建脚本来使用它们全部获取/安装(例如,如果我使用 Travis CI,我会更新我的 .travis.yml
以调用 npm install
除了 pip install -r
)。
关于python项目中的javascript依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44185843/