应用打包

当前状态的Python包与各种工具有点儿混乱,本结我们将学习使用setuptools来构建应用包。该工具是强烈推荐使用的打包工具,之后我们也会使用pip去安装和卸载它。

Python打包指的是将应用准备成一种特殊的格式,该格式的应用容易安装和使用。Django自身就是被打成非常像这样的包,作为像polls这样小的应用,这个过程并不困难。

1、首先,在Django项目外层目录,为polls创建一个父目录,给该目录取名django-polls。当我们为应用命名时,在PyPI资源中检查下,避免与已经存在的包名冲突。在创建要分发的包时,将django-预先添加到模块名通常是很有用的。这有助于其他人在查找Django应用程序时,将你的应用程序标识为Django特定的应用程序。在INSTALLED_APPS中的应用分类必须唯一,避免使用任何与Django contrib packages里面相同的分类,例如:authadmin或者message

2、拷贝polls目录到django-polls目录中;

3、创建文件django-polls/README.rst,并将下面内容写入该文件:

=====
Polls
===== Polls is a simple Django app to conduct Web-based polls. For each
question, visitors can choose between a fixed number of answers. Detailed documentation is in the "docs" directory. Quick start
----------- 1. Add "polls" to your INSTALLED_APPS setting like this:: INSTALLED_APPS = [
...
'polls',
] 2. Include the polls URLconf in your project urls.py like this:: path('polls/', include('polls.urls')), 3. Run `python manage.py migrate` to create the polls models. 4. Start the development server and visit http://127.0.0.1:8000/admin/
to create a poll (you'll need the Admin app enabled). 5. Visit http://127.0.0.1:8000/polls/ to participate in the poll.

4、创建一个django-polls/LICENSE文件。选择许可证超出了本教程的范畴,但足以说明公开发布没有许可证的代码是无用的。Django和许多与Django的应用程序在BSD许可下分发;然而你可以自由选择你的许可证。你需要注意的是,你所选择的许可证将会影响到使用你代码的人。

5、接下来,我们将会创建一个setup.py文件,该文件详细提供了如何构建和安装该应用程序。对该文件全面的解释超出了本教程的范围,但是setuptools docs会有一个很好的解释。创建django-polls/setup.py文件,并将下面代码写入该文件:

import os
from setuptools import find_packages, setup with open(os.path.join(os.path.dirname(__file__), 'README.rst')) as readme:
README = readme.read() # allow setup.py to be run from any path
os.chdir(os.path.normpath(os.path.join(os.path.abspath(__file__), os.pardir))) setup(
name='django-polls',
version='0.1',
packages=find_packages(),
include_package_data=True,
license='BSD License', # example license
description='A simple Django app to conduct Web-based polls.',
long_description=README,
url='https://www.example.com/',
author='Your Name',
author_email='yourname@example.com',
classifiers=[
'Environment :: Web Environment',
'Framework :: Django',
'Framework :: Django :: X.Y', # replace "X.Y" as appropriate
'Intended Audience :: Developers',
'License :: OSI Approved :: BSD License', # example license
'Operating System :: OS Independent',
'Programming Language :: Python',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
'Topic :: Internet :: WWW/HTTP',
'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
],
)

6、默认情况下,仅仅只有Python模块和包会包含在其中,为了包含额外的文件,我们需要创建一个MANIEST.in文件,在之前的setuptools docs对该文件有更详细的阐述。为了包含模板,README.rst和我们的LICENSE文件,创建一个django-polls/MANIFEST.in文件,并添加如下代码:

include LICENSE
include README.rst
recursive-include polls/static *
recursive-include polls/templates *

7、该步骤是可以选的(建议添加该步骤),在应用程序总添加详细的文档。为将来的文档创建一个空目录django-polls/docs,在django-polls/MANIFEST.in中增加下面一行:

recursive-include docs *

注意:在之前的包里面不要包含docs目录,除非该目录添加了一些文件;

8、在django-polls目录种,使用命令python setup.py sdist尝试打包,它将会创建一个名叫dist的目录并且构建新的包:django-polls-0.1.tar.gz,如下图所示:

使用你自己的包

由于将polls从我们的项目中移除,该项目将无法正常工作。接下来通过安装我们新的django-polls包来解决这个问题。

1、使用pip安装(默认已经安装pip)

pip install --user django-polls/dist/django-polls-0.1.tar.gz

注意:这里安装需要进入到django-polls目录执行命令,如下所示为笔者目录:

2、祝你好运,我们的Django项目又可以正常工作了,可以运行服务器进行确认;

3、使用pip卸载

pip uninstall django-polls

注意:卸载无需再进入之前的目录,直接进入cmd命令行模式就可以执行卸载命令。

Django 2.0 学习(11):Django setuptools的更多相关文章

  1. Django 2.0 学习(07):Django 视图(进阶-续)

    接Django 2.0 学习(06):Django 视图(进阶),我们将聚焦在使用简单的表单进行处理和精简代码. 编写简单表单 我们将用下面的代码,来替换之前的detail模板("polls ...

  2. Django 2.0 学习(04):Django数据库

    数据库设置/配置 打开mysite/settings.py,我们会发现Django是用的是默认的数据库SQLite,如下图所示: Django也是支持其它数据库的,比如PostgreSQL.MySQL ...

  3. Django 2.0 学习(19):Django 分页器

    Django 分页器 要使用Django实现分页功能,必须从Django中导入Paginator模块(painator - 分页器) views.py from django.shortcuts im ...

  4. Django 2.0 学习

    Django django是基于MTV结构的WEB框架 Model 数据库操作 Template 模版文件 View 业务处理 在Python中安装django 2.0 1 直接安装 pip inst ...

  5. Django 2.0 学习(12):Django 模板语法

    Django 模板语法 一.模板 只要是在html里面有模板语法就不是html文件了,这样的文件就叫做模板. 二.模板语法 模板语法变量:{{ }} 在Django模板中遍历复杂数据结构的关键是句点字 ...

  6. Django 2.0 学习(08):Django 自动化测试

    编写我们的第一个测试 确定bug 幸运的是,在polls应用中存在一个小小的bug急需修复:无论Question的发布日期是最近(最后)的日期,还是将来很多天的日期,Question.was_publ ...

  7. Django 2.0 学习(06):Django 视图(进阶)

    概述 Django中的特方法,该方法代表了Django的Web页面,并且视图具有特定的模板.以博客应用为例进行说明,在博客应用中应该包含下面的视图: 博客主页:显示最近的一些记录: 详细页面:单个详细 ...

  8. Django 2.0 学习(03):Django视图和URL(下)

    接上篇博文,继续分析Django基本流程. 编写第一个(view)视图函数 1.打开文件polls/views.py,输入下面的Python代码: from django.http import Ht ...

  9. Django 2.0 学习(01):Django初识与安装

    Django(Python Web框架) Django是一个开放源代码的Web框架,用Python写的.采用了MTV的框架模式,即模型M,模板T和视图V.它最初被开发是用来管理以新闻内容为主的网站,即 ...

随机推荐

  1. 【commons】字符串工具类——commons-lang3之StringUtils

    类似工具见Hutool-StrUtil 一.起步 引入maven依赖 <!-- https://mvnrepository.com/artifact/org.apache.commons/com ...

  2. 版本控制工具——Git的拓展使用

    一.使用Github 通过前面两节已经配置了SSH Key与Github上的相关设置,接下来介绍常用的使用 使用Fork克隆一份到本地仓库 之后可以在自己的仓库克隆一份到本地 git clone gi ...

  3. See You Again——我最后的汇编程序

    汇编语言:课程设计2 前言 由于本人水平不够,这里的课程设计2的程序实现并没有像王爽书中所说的那样可以不依赖于操作系统运行. 这里的程序依然要在dos下运行,而且没有实现引导现有操作系统的功能. 该程 ...

  4. 海思NB-IOT的SDK看门狗的使用

    1. 看门狗需要喂狗,如果自己写的任务一直运行,那么空闲任务无法运行会导致看门狗复位,来看下看门狗的机制,首先系统启动的时候创建了空闲任务 在这个函数里面void vTaskStartSchedule ...

  5. Adobe Photoshop CC2018最新教程+某宝店铺装修教程

    PS免费教程,ps淘宝店铺装修教程.该资源为本人从某商网站重金买来,现免费分享给大家,下载地址:百度网盘,https://pan.baidu.com/s/127PjFbGwVVUVce1litHFsw

  6. Java开发工程师(Web方向) - 01.Java Web开发入门 - 第2章.HTTP协议简介

    第2章--HTTP协议简介 HTTP协议简介 Abstract: HTTP协议的特性,HTTP请求/响应的过程,HTTP请求/响应的报文格式等知识,最后会演示如何通过Chrome提供的开发者工具,去跟 ...

  7. (Pyhton爬虫03)爬虫初识

    原本的想法是这样的:博客整理知识学习的同时,也记录点心情...集中式学习就没这么多好记录的了! 要学习一门技术,首先要简单认识一下爬虫!其实可以参考爬虫第一章! 整体上介绍该技术包含技能,具体能做什么 ...

  8. lintcode174 删除链表中倒数第n个节点

    删除链表中倒数第n个节点   给定一个链表,删除链表中倒数第n个节点,返回链表的头节点. 注意事项 链表中的节点个数大于等于n 您在真实的面试中是否遇到过这个题? Yes 样例 给出链表1->2 ...

  9. 【MySQL解惑笔记】Navicat 无法远程连接MySQL数据库

    安装好Navicat之后远程连接MySQL数据库出现以下报错截图: 出现以上截图怀疑是mysql用户权限不够: GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.1 ...

  10. POJ 2184 Cow Exhabition

    "Fat and docile, big and dumb, they look so stupid, they aren't much fun..." - Cows with G ...