1

所以我们正在编写一个全文搜索框架MongoDb。MongoDB 几乎是 javascript-native,所以我们首先编写了 javascript 库,它可以工作。

现在我正在尝试为它编写一个 python 框架,它将部分在 python 中,但部分使用那些相同的存储 javascript 函数 - javascript 函数是库的固有部分。另一方面,javascript 框架不依赖于 python。由于它们相互交织在一起,因此将它们保存在同一个存储库中似乎是值得的。

我正在尝试找出一种构建整个项目的方法,以赋予 javascript 和 python 框架同等的地位(可能是 ruby​​ 驱动程序或将来的任何东西?),但仍然允许 python 库很好地安装。

目前它看起来像这样:(简化了一点)

javascript/jstest/test1.js
javascript/mongo-fulltext/search.js
javascript/mongo-fulltext/util.js
python/docs/indext.rst
python/tests/search_test.py
python/tests/__init__.py
python/mongofulltextsearch/__init__.py
python/mongofulltextsearch/mongo_search.py
python/mongofulltextsearch/util.py
python/setup.py

为简单起见,我跳过了一些文件,但你明白了一般的想法;这是一个非常标准的python项目......除了它关键地依赖于存储在同级目录树中的一大堆javascript。

当涉及到 setuptools 时,处理这种事情的首选设置是什么?根据 setuptools 文档,我可以弄清楚如何使用package_dataetc 来安装存在于我的 python 项目中的数据文件。

问题是如果我想使用 setuptools 安装东西,包括来自 python 代码树之外的 javascript 文件,然后在我开发 python 代码以及将其easy_install编辑到某人的站点时也以一致的方式访问它们。

这是setuptools 支持的行为吗?我应该使用 paver 或 distutils2 还是 Distribute 或其他什么?(基本的 distutils 不是一个选项;我这样做的全部原因是启用需求跟踪)我应该如何将这些文件的内容读入 python 脚本?

4

1 回答 1

2

简短的回答是,没有一个 Python 分发工具会按照你想要的方式做你想做的事。即使您使用 distutils 的 data_files 功能,您仍然需要将您的 javascript 文件复制到您的 Python 项目目录中(即,与您的 setup.py 位于同一目录下的某个位置。)

鉴于此,您不妨将 .js 文件复制到您的包(即与 mongofulltextsearch/ init .py 一起)作为构建过程的一部分,并使用 package_data 或 include_package_data=True。

(或者,如果您的版本控制系统支持这些,您可以使用符号链接、外部或类似的东西。我相信在构建源代码分发时,Python 分发工具会将符号链接转换为真实文件。至少,您可以给它一个尝试。)

于 2010-05-24T16:00:53.203 回答