Django项目的需求包监视器。
django-package-monitor的Python项目详细描述
Django软件包监视器
这个包现在是python3和django 1.11及更高版本。对于以前的版本,请参阅python2分支。
用于跟踪依赖项更新的django应用程序。
背景
在Yunojuno,我们有一个Django项目,其中包括近100个外部包。 为了管理这些更新,我们有一个滚动开发任务 每月第一周提供,包括以下内容:
- 使用pip list --outdated列出所有可用的更新
- 将更新(使用semver)分组为major、minor、patch、other
- 在单个更新/提交中应用修补程序更新
- 将小更新作为一个组应用,查看哪些中断、删除、冲洗、重复
- 查看主要更新
这个任务是一个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),则可以看到管理员 列表页:
如果单击右上角的“重新加载本地要求”按钮,它将加载内容 之前使用的需求文件:
注意如果有任何需求不能由semantic_version.Version.coerce方法解析,那么 is_parseableproperty设置为false,包实际上是非托管的。
此时,它已经解析了需求文件,并存储了 每个包(作为current_version)。要查看最新版本,请选择所有软件包, 并从操作列表中选择“从PYPI更新选定的包:
这可能需要一些时间,因为它将为每个包调用pypi api(不包括那些 标记为可编辑),并下载每个版本的最新版本信息。最后,你应该 请参阅使用新版本信息(如latest_version)以及许可证更新的页面 存储在PYPI元数据中的信息:
如果你钻到To有关单个软件包的详细信息,您可以看到所有可用版本:
贡献
这一点也不完整-它不能处理除“=”以外的任何需求, 它还不能帮助更新需求文件本身。不过,这已经足够好了 有价值,因此释放它。如果你想为这个项目做贡献,通常的github规则 应用:
- 将回购交给你自己的账户
- 提交拉取请求
- 为任何新代码添加测试 遵循现有项目编码风格<
许可证
这个项目是麻省理工学院授权的-请参阅许可证文件了解详细信息。