calmjs框架的Bower支持。
项目描述
calmjs.bower
简介
此包通过calmjs框架为Python提供Bower支持。通过使用此包,可以在给定Python包的兼容setuptools的setup.py文件中的bower_json部分中声明对bower包的依赖关系,以生成bower.json文件元数据,该元数据可以被其他使用calmjs框架的Python包引用和重用。
有关如何使用此包的详细信息,请参阅calmjs包的文档。
安装
虽然calmjs.bower的目标是将Bower的支持引入到calmjs中,但这个库可以在Bower预先安装的情况下正常工作,因为calmjs可以被用来将Bower引入当前的Python环境。然而,必须安装并可用Node.js和npm来实现这一点;如果没有安装,请按照运行环境/平台适当的Node.js安装步骤进行操作。
要将calmjs.bower安装到指定的Python环境中,可以使用以下命令直接从PyPI安装:
$ pip install calmjs.bower
如果希望在当前目录中本地安装Bower,可以使用以下命令通过calmjs进行操作:
$ calmjs npm --install calmjs.bower
这相当于执行npm install bower;虽然这看起来并没有什么优势,但其他声明了对特定工具集依赖的Python包也可以这样调用,并且可以继续进行下去。例如,example.package可能通过npm声明对Bower以及其他通过bower可用的包的依赖,这个过程就变成了这样:
$ calmjs npm --install example.package
$ calmjs bower --install example.package
现在将通过相关工具将example.package的所有标准JavaScript和Node.js依赖项安装到当前目录中。这个过程还将安装其他Python包依赖的example.package声明的所有其他依赖项。有关更多用法,请参阅本文件的下方或calmjs的文档。
替代安装方法(高级用户)
calmjs.bower仍在开发中,对于最新功能和错误修复,可以通过git安装开发版本,如下所示:
$ pip install calmjs
$ pip install git+https://github.com/calmjs/calmjs.bower.git#egg=calmjs.bower
或者,可以直接克隆git仓库,在源目录的根目录下执行python setup.py develop。
请注意,在执行calmjs.bower源树中的setup.py之前,calmjs必须可用,因为它需要calmjs中的package_json写入能力。请参阅基本包以获取更多信息。
由于calmjs既被声明为命名空间又被声明为包,因此在安装其他calmjs包时混合上述安装方法可能导致模块导入器无法查找目标模块。虽然这通常不会影响最终用户(只要他们使用相同的标准安装方法,即wheel),但对于开发者来说可能会很麻烦。为了解决这个问题,可以选择为所有包使用相同的安装方法(即对于所有包使用python setup.py develop),或者从主calmjs包导入一个模块。以下是一个示例运行:
>>> import calmjs.bower
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named 'calmjs.bower'
>>> import calmjs.base
>>> import calmjs.bower
>>>
如果这种行为(和解决方案)不理想,请确保所有与calmjs相关的包的安装遵循相同的方法(即对于所有包使用python setup.py develop,或者使用通过pip获得的wheel)。
测试安装
为了确保calmjs的安装正确无误,可以使用以下命令执行内置的测试套件:
$ python -m unittest calmjs.bower.tests.make_suite
如果出现失败,请在问题跟踪器上提交问题,包括完整的堆栈跟踪,以及安装方法。请记住包括平台特定的信息,例如Python版本、操作系统环境和版本,以及与问题相关的其他信息。
用法
calmjs.bower 包将安装适当的钩子到 calmjs 控制台入口,并且设置 setuptools 以便从当前包或当前环境中安装的其他包中的 bower_json 声明中生成 bower.json。
如果没有安装具有冲突声明的包,并且通过 PATH 环境变量(或当前目录的 node_modules)提供了 bower 二进制文件,运行实用程序将产生类似以下内容:
$ calmjs
usage: calmjs [-h] [-d] [-q] [-v] [-V] <command> ...
positional arguments:
<command>
npm npm compatibility helper
bower bower compatibility helper
如果 bower 不可用,也会显示警告,但这只会影响需要该二进制文件的操作。关于使用细节,请调用 calmjs bower --help。
以下帮助概述了 calmjs 支持通过 Python 包进行声明的典型 bower 使用,因此大部分帮助是从该包中复制和共享的,并对其 npm 支持进行了修改。
声明特定 Python 包的 bower.json
如果某个包希望声明对通过 bower 可用的包的依赖关系,它可以在其 setup.py 中这样做:
from setuptools import setup
bower_json = {
"dependencies": {
"jquery": "~3.0.0",
"underscore": "~1.8.0",
}
}
setup(
name='example.package',
...
install_requires=[
'calmjs.bower',
...
],
bower_json=bower_json,
...
)
这将允许用户通过上述安装部分中概述的适当包管理器安装所有依赖项。
在 bower_components 内部声明显式依赖关系
鉴于对从 bower 源的特定版本包的依赖关系已显式指定,构建工具将从对这些包中所需文件的显式声明中再次受益。具体来说,编译的包可以在与 bower_json 类似的 JSON 字符串中的 extras_calmjs 部分声明,如下所示:
extras_calmjs = {
'bower_components': {
'jquery': 'jquery/dist/jquery.js',
'underscore': 'underscore/underscore.js',
},
}
setup(
name='example.package',
...
extras_calmjs=extras_calmjs,
...
)
由于 bower_components 已声明为 extras_key,因此环境内其他包中现有声明的冲突将像 bower_json 中声明的依赖关系部分那样合并。
请注意,必须声明完整路径(请注意,示例中包含 .js 文件名后缀);也可以声明目录。然而,由于这些声明是在 Python 内部完成的,因此需要显式、完整的路径,因此这取决于下游集成包正确处理和/或将其转换为标准 Node.js 工具可能期望的约定(即省略 .js 文件名后缀)。
到目前为止,尚未实现 .bowerrc 配置设置的支持,因此 calmjs 通过 bower 的使用行为将不考虑在该文件中指定的位置。对于将依赖项安装到作为典型 calmjs 工作流程一部分的某些单独目录的标准用例,这不应成为问题。
故障排除
以下是可能在使用 calmjs.bower 时遇到的常见问题。
RuntimeWarning: 无法定位 'bower' 二进制文件;
如果出现此消息,这仅仅意味着默认模块设置(即 from calmjs import bower)在导入时找不到可用的 bower 二进制/运行时。由于默认运行时进行各种设置,这意味着辅助方法可能无法直接使用。这总是可以通过在当前目录(通过 npm)中预先安装 bower 或通过 PATH 环境变量使其可用来纠正。有关可以执行的操作的详细信息,请参阅错误消息。
贡献
法律
calmjs.bower 包是 calmjs 项目的一部分。
calmjs 项目版权所有(c)2016 奥克兰生物工程研究所,奥克兰大学。 calmjs.bower 根据 GPLv2 或更高版本授权。
变更日志
1.0.2 (2016-09-07)
通过 appveyor 在 Windows 上引入 CI,并在此处以及上游中修复了针对 Python 2.7 在 Windows 上的若干个特定问题。
1.0.0 (2016-09-04)
初始实现,通过框架本身使 bower-1.7.x 能够在 calmjs 框架中可用。
允许通过 setuptools(作为 bower_json 设置字段)声明 bower.json。
以与 calmjs npm 相同的方式启用 calmjs bower 选项。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源代码分发
构建分发
calmjs.bower-1.0.2.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 844b268353f63d0be7cdd981595f2157c7c51dcb1b2222547d5f6a16cf3b9ece |
|
MD5 | 326e7486c785af9a1b5c9dd0d7b4a45f |
|
BLAKE2b-256 | a55474b8be2b46075ff0b1c73f67f9c311b0c685cc654a0418a463ad24cbfda4 |
calmjs.bower-1.0.2-py2.py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e16452deb1476ad5edb6ec35412e0db487945f3b86f1f9fd9c71742555205c0d |
|
MD5 | 890942ea4966fd74155548e12d08bb02 |
|
BLAKE2b-256 | 41dffc0e492b68a4d9dc00e3e8b7d7fb254dd746f309adcad5b6a291f5b142c8 |