面向python包的自制公式模板生成器

python-brewer的Python项目详细描述


概述

python-brewer是一个命令行实用程序(用python编写),用于帮助 从中生成Homebrew的公式模板 安装了python包。我们的目标不是创造完美, 现成的自制公式:目的是生成 template对于您来说,可以从 过程。

首先,它接受一个已安装的包,查找其所有已安装的 依赖项,并生成包含^{tt2}的模板$ 对所有这些依赖项的引用(根据安装的版本)。 它还自动计算所有包的sha256散列 通过从pypi下载它们的源代码发行版。

请参阅自制的Python for Formula Authors 有关提交用于自制的基于python的公式的更多详细信息的指南。

要求

要安装python-brewer,您需要:

  • python 2.7+或python 3.5+
  • pip

安装

通过PYPI安装(请安装到虚拟环境中):

> pip install python-brewer

基本用法

作为一个简单的例子,我们将为 Statik-静态网站生成器。这个 第一步是将软件包安装到您的虚拟环境中:

> pip install -U statik

下一步是使用pybrew命令,该命令由 python-brewer,以生成自制公式模板。在这个 在撰写本文时,我正在为 v0.14.2属于statik

> pybrew \
# The name of the formula
    -n "Statik"\
# A description for the formula
    -d "Python-based, generic static web site generator aimed at developers"\
# Project homepage
    -H https://getstatik.com \
# HEAD of Git repo
    -g https://github.com/thanethomson/statik.git \
# Latest release of the package
    -r https://github.com/thanethomson/statik/archive/v0.14.2.tar.gz \
# Name of the Python package
    statik \
# Output file to which to write the template
    statik.rb

在编写本文时,以下文件由 pybrew

classStatik<FormulaincludeLanguage::Python::Virtualenvdesc"Python-based, generic static web site generator aimed at developers"homepage"https://getstatik.com"url"https://github.com/thanethomson/statik/archive/v0.14.2.tar.gz"sha256"ef2e67ecf8a1a59b71b5c88b86c7335e32cc480d3156716c3b2e7691edab7620"head"https://github.com/thanethomson/statik.git"# TODO: If you're submitting an existing package, make sure you include your#       bottle block here.depends_on:pythonifMacOS.version<=:snow_leopardresource"future"dourl"https://pypi.python.org/packages/00/2b/8d082ddfed935f3608cc61140df6dcbf0edea1bc3ab52fb6c29ae3e81e85/future-0.16.0.tar.gz"sha256"e39ced1ab767b5936646cedba8bcce582398233d6a627067d4c6a454c90cfedb"endresource"tornado"dourl"https://pypi.python.org/packages/1e/7c/ea047f7bbd1ff22a7f69fe55e7561040e3e54d6f31da6267ef9748321f98/tornado-4.4.2.tar.gz"sha256"2898f992f898cd41eeb8d53b6df75495f2f423b6672890aadaf196ea1448edcc"endresource"argh"dourl"https://pypi.python.org/packages/e3/75/1183b5d1663a66aebb2c184e0398724b624cecd4f4b679cb6e25de97ed15/argh-0.26.2.tar.gz"sha256"e9535b8c84dc9571a48999094fda7f33e63c3f1b74f3e5f3ac0105a58405bb65"endresource"pathtools"dourl"https://pypi.python.org/packages/e7/7f/470d6fcdf23f9f3518f6b0b76be9df16dcc8630ad409947f8be2eb0ed13a/pathtools-0.1.2.tar.gz"sha256"7c35c5421a39bb82e58018febd90e3b6e5db34c5443aaaf742b3f33d4655f1c0"endresource"PyYAML"dourl"https://pypi.python.org/packages/4a/85/db5a2df477072b2902b0eb892feb37d88ac635d36245a72a6a69b23b383a/PyYAML-3.12.tar.gz"sha256"592766c6303207a20efc445587778322d7f73b161bd994f227adaa341ba212ab"endresource"watchdog"dourl"https://pypi.python.org/packages/54/7d/c7c0ad1e32b9f132075967fc353a244eb2b375a3d2f5b0ce612fd96e107e/watchdog-0.8.3.tar.gz"sha256"7e65882adb7746039b6f3876ee174952f8eaaa34491ba34333ddf1fe35de4162"endresource"httpwatcher"dourl"https://pypi.python.org/packages/02/97/055185c6a54e470ef943556b613bc56975e82da3f456bdd08f036cf7cae8/httpwatcher-0.4.0.tar.gz"sha256"2f84c93a3766a11a69f2d339f143889558bd5eccee77574593c39111a3202645"endresource"MarkupSafe"dourl"https://pypi.python.org/packages/c0/41/bae1254e0396c0cc8cf1751cb7d9afc90a602353695af5952530482c963f/MarkupSafe-0.23.tar.gz"sha256"a4ec1aff59b95a14b45eb2e23761a0179e98319da5a7eb76b56ea8cdc7b871c3"endresource"jinja2"dourl"https://pypi.python.org/packages/f4/3f/28387a5bbc6883082c16784c6135440b94f9d5938fb156ff579798e18eda/Jinja2-2.9.4.tar.gz"sha256"aab8d8ca9f45624f1e77f2844bf3c144d180e97da8824c2a6d7552ad039b5442"endresource"lipsum"dourl"https://pypi.python.org/packages/59/97/00636d64bc77dc173d782995de1b56dde39c70bb97112964452709b4d9aa/lipsum-0.1.2.tar.gz"sha256"ba5f46cef19104c07f889b14486a3772845fc25afa1eb5e2eee1f2d9badcb8ab"endresource"markdown"dourl"https://pypi.python.org/packages/d4/32/642bd580c577af37b00a1eb59b0eaa996f2d11dfe394f3dd0c7a8a2de81a/Markdown-2.6.7.tar.gz"sha256"daebf24846efa7ff269cfde8c41a48bb2303920c7b2c7c5e04fa82e6282d05c0"endresource"Unidecode"dourl"https://pypi.python.org/packages/ba/64/410af95d27f2a8824112d17ed41ea7ce6d2cbc8a4832c2e548d3408fad0a/Unidecode-0.04.20.tar.gz"sha256"ed4418b4b1b190487753f1cca6299e8076079258647284414e6d607d1f8a00e0"endresource"python-slugify"dourl"https://pypi.python.org/packages/63/86/ecf7b570089d794a9476c7411a06a329eb8e386f3407576640ccbe7a4698/python-slugify-1.2.1.tar.gz"sha256"501182ec738cc8b743ae5c76c183f4427187ef016257f062b3fa594f60916e34"endresource"six"dourl"https://pypi.python.org/packages/b3/b2/238e2590826bfdd113244a40d9d3eb26918bd798fc187e2360a8367068db/six-1.10.0.tar.gz"sha256"105f8d68616f8248e24bf0e9372ef04d3cc10104f1980f54d57b2ce73a5ad56a"endresource"SQLAlchemy"dourl"https://pypi.python.org/packages/da/04/8048a5075d6e29235bbd6f1ea092a38dbe2630c670e73d4aa923a4e5521c/SQLAlchemy-1.1.5.tar.gz"sha256"68fb40049690e567ebda7b270176f5abf0d53d9fbd515fec4e43326f601119b6"enddefinstallvirtualenv_install_with_resourcesend# TODO: Add your package's tests hereend

当然,我已经为脚本添加了原始的bottle块 以及软件包的单元测试。见this commitstatik.rbhomebrew-core中查看更多详细信息。

Python2还是3?

虽然python-brewer在Python2.7+和Python3.5+上运行良好,但是 需要注意的是,有时您的依赖关系会有所不同 基于您运行的python版本,以及 你的依赖。有时,某些包包含不同的 运行Python3时的依赖项,例如 Tornado

因此,python-brewer会自动更改python依赖项 基于检测到的python版本。在上面的包中 statik,我用python 2运行了pybrew,因此,自动 添加行:

depends_on:pythonifMacOS.version<=:snow_leopard

如果我用python 3运行它,它会添加以下行 相反:

depends_on:python3

当然,这会导致自制程序试图安装自己的 您的包的Python3发行版。

贡献

请随意贡献!如果你想添加或修复 python-brewer,请:

  1. 分叉项目
  2. 在功能分支中进行更改
  3. 提交拉取请求

许可证

MIT许可证(MIT)

版权所有(c)2017 Thane Thomson

特此免费向任何获得 本软件和相关文档文件的副本 “软件”),无限制地处理软件,包括 但不限于使用、复制、修改、合并、发布, 分发、再授权和/或出售软件副本,以及 允许向其提供软件的人员这样做,但须遵守 以下条件:

上述版权公告及本许可公告须包括在内 在软件的所有副本或大部分中。

软件按“原样”提供,不作任何形式的保证 或默示的,包括但不限于 适销性、适合特定目的和不侵权。 在任何情况下,作者或版权持有人均不对任何 索赔、损害赔偿或其他责任,无论是在合同诉讼中, 侵权行为或其他,由…引起的,由…引起的或由…引起的与 软件或软件的使用或其他交易

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
通过拖动Java Swing scroll JScrollPane   使用springrest控制器的java   为什么使用Java客户端传输的数据在Apache Pulsar上显示为编码?   java当数组位于arraylist中时,如何访问它?   用于处理{Item1}的正则表达式代码。将项2放入数组或列表中   java mouseListener让我的JList表现得很奇怪   java SecurityContextHolder尽管成功登录,但仍承载匿名用户   java如何在selenium自动化中使用captcha   eclipse如何在java中检查按钮是否可单击,SeleniumWebDriver。ps:检查是否可点击,不要等到它可点击   java Android存在读取\调用\日志权限问题   java按这种方式进行取整(保持小数)   Java中检查布尔数组的最快方法   java将列表中的元素替换为其他元素   JavaFX中的javaunicode补充平面   java如何使用hashmap显示图像url