Django项目的需求包监视器。

django-package-monitor的Python项目详细描述


https://travis-ci.org/yunojuno/django-package-monitor.svg?branch=masterhttps://badge.fury.io/py/django-package-monitor.svg

Django软件包监视器

这个包现在是python3和django 1.11及更高版本。对于以前的版本,请参阅python2分支。

用于跟踪依赖项更新的django应用程序。

背景

在Yunojuno,我们有一个Django项目,其中包括近100个外部包。 为了管理这些更新,我们有一个滚动开发任务 每月第一周提供,包括以下内容:

  1. 使用pip list --outdated列出所有可用的更新
  2. 将更新(使用semver)分组为major、minor、patch、other
  3. 在单个更新/提交中应用修补程序更新
  4. 将小更新作为一个组应用,查看哪些中断、删除、冲洗、重复
  5. 查看主要更新

这个任务是一个pita,所以我们决定把它简化。

实施

此项目包含一个django应用程序,可用于监视您的包。

它由一个模型PackageVersion组成,这个管理列表视图 可用于查看当前包版本,并从pypi加载最新版本, 以及一个可以用来加载本地需求和 从shell更新远程版本-如果您 感觉到需要。

需要注意的是,此应用不会更新您对 你-它只显示你的需求,最新的 在PYPI上可用。

为了说明它是如何工作的,应用程序本身包含一个django项目 可用于演示功能的。

安装

使用pip下载/安装应用程序:

pip install django-package-monitor

将应用程序package_monitor添加到INSTALLED_APPSdjango设置:

# settings.pyINSTALLED_APPS=('django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','package_monitor',...)

设置PACKAGE_MONITOR_REQUIREMENTS_FILE设置以指向您的项目 需求文件:

# settings.pyPACKAGE_MONITOR_REQUIREMENTS_FILE=path.join(PROJECT_ROOT,'requirements.txt')

将应用程序URL添加到您的项目-nb它必须设置命名空间:

# urls.pyurlpatterns=patterns('',url(r'^admin/',include(admin.site.urls)),url(r'^package_monitor/',include('package_monitor.urls',namespace='package_monitor')),)

此时,您应该有一个工作实现。你可以通过运行 加载本地需求的管理命令:

# load up the local requirements file
$ python manage.py refresh_packages --local

这将把它在需求文件中找到的所有需求加载到 数据库。如果要检查pypi的更新版本,请使用^{tt6}运行命令$ 选择。您可以同时运行这两个命令:

# load up the local requirements file, and check PyPI$pythonmanage.pyrefresh_packages--local--remote

如果要在加载本地文件之前清除现有的^ {TT2}$表,请使用^ {TT8}$ 选项:

# clear out database, load up the local requirements file, and check PyPI
$ python manage.py refresh_packages --clean --local --remote

测试

有一个测试套件可以使用tox运行:

$ pip install -r requirements
$ tox

除了单元测试之外,源代码发行版还包括一个功能齐全的django 项目,可以从repo根目录运行,并用于演示其工作原理:

$ git clone git@github.com:yunojuno/django-package-monitor.git
$ cd django-package-monitor
$ pip install -r requirements.txt
# you will need to create a superuser in order to access the admin site
$ python manage.py createsuperuser
$ python manage.py runserver

如果您随后登录到应用程序(默认情况下为http://localhost:8000/admin),则可以看到管理员 列表页:

Screenshot of admin list view (empty)

如果单击右上角的“重新加载本地要求”按钮,它将加载内容 之前使用的需求文件:

Screenshot of admin list view populated with local requirements

注意如果有任何需求不能由semantic_version.Version.coerce方法解析,那么 is_parseableproperty设置为false,包实际上是非托管的。

此时,它已经解析了需求文件,并存储了 每个包(作为current_version)。要查看最新版本,请选择所有软件包, 并从操作列表中选择“从PYPI更新选定的包:

Screenshot of admin list view with all requirements selected

这可能需要一些时间,因为它将为每个包调用pypi api(不包括那些 标记为可编辑),并下载每个版本的最新版本信息。最后,你应该 请参阅使用新版本信息(如latest_version)以及许可证更新的页面 存储在PYPI元数据中的信息:

Screenshot of admin list view with requirement info updated from PyPI

如果你钻到To有关单个软件包的详细信息,您可以看到所有可用版本:

Screenshot of Django package details

贡献

这一点也不完整-它不能处理除“=”以外的任何需求, 它还不能帮助更新需求文件本身。不过,这已经足够好了 有价值,因此释放它。如果你想为这个项目做贡献,通常的github规则 应用:

  1. 将回购交给你自己的账户
  2. 提交拉取请求
  3. 为任何新代码添加测试
  4. 遵循现有项目编码风格<

许可证

这个项目是麻省理工学院授权的-请参阅许可证文件了解详细信息。

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

推荐PyPI第三方库


热门话题
JAVA Tictoe Minimax算法不断引发异常   java弹性时间计算器字符串开关   java从表单post操作中检索值   java Selenium webdriver无法在youtube上找到元素   java如何自动填写XFA(PDF)表单?   java为什么我的秒表程序不能运行?   raspberry pi禁用java中的其他声音   java如何配置web。xml,glassfishweb。JSF的xml文件?   使用浏览器运行自动测试时出现java错误。如何运行它?   java如何阻止Swing程序在每次向JTextArea添加文本时调整组件的大小   javajavax。注射注射无效   java如何改进Solaris服务器配置   java如何在elasticsearch后端脱机时处理Hibernate搜索启动   java TCPsocket的延迟很差,除非持续流式传输