• Django APP打包重用


    引言

    有时候,我们需要将自己写的app分发(dist)给同事,分享给朋友,或者在互联网上发布,这都需要打包、分发我们的app。

    Django的子系统重用是基于app级别的。也就是一个项目可以包含多个互相独立的app,不同项目之间没有关系。但是,一个app可以属于多个项目,可以在任何地点、任何时间和任何项目中被重用。你需要将该app运行时所必须的全部文件、资源、配置、数据等等都封装在一个整体内。

    打包工具:setuptools、pip。一般情况下安装Python时已自带安装了它们。

    引用官方文档:https://docs.djangoproject.com/zh-hans/2.0/intro/reusable-apps/

    打包APP

    打包的本质,就是封装你的源代码和文件成为一种新的数据包装格式,有利于传输、分发和安装。在Django中打包一个app总体上看分三大步:装包—>编写setup.py—>打包。细分下面八个步骤:

    1. 新建文件夹

    在你的Django项目目录外面,假如为polls应用,准备一个新文件夹,这里取名django-polls

    额外提醒:

    为你的app选择一个合适的名字:在取名前,去PyPi搜索一下是否有重名或冲突的app(包)已经存在。建议给app的名字加上“django-”的前缀。名字中最后一个圆点的后面部分在INSTALLED_APPS中一定要独一无二,不能和任何Django的contrib packages中的app重名,例如auth、admin、messages等等。

    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::
    
        url(r'^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.

    这其实是一个纯文本文件,内容和格式完全自由,但核心要点是注明你的app功能和简单的使用方法。

    4. 添加授权声明

    创建一个django-polls/LICENSE版权申明文件。大多数Django相关的app都基于BSD版权。

    5. 创建MANIFEST文件

    默认情况下,只有Python的模块和包会被打包进我们的app内。为了包含一些其它的文件,比如静态文件、templates模板等非Python语言编写的文件,需要创建一个django-polls/MANIFEST.in文件,并写入下面的内容:

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

    6. 添加doc目录(可选)

    该步骤可选,但是强烈推荐将详细的说明文档一起打包。创建一个空的目录django-polls/docs,用于放置app相关的所有文档。同时不要忘了,在django-polls/MANIFEST.in文件内加入一行 "recursive-include docs *"。需要注意的是,如果docs目录是空的,那么它不会被打包进去。

    7. 编写setup.py脚本

    创建一个django-polls/setup.py文件,包含了编译和安装app的配置细节。这种配置脚本的具体语法,请前往setuptools的官方文档获取详细的教程。下面是一个范例,大多数情况下,你在此基础上改改就可以了:

    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',
            # Replace these appropriately if you are stuck on Python 2.
            'Programming Language :: Python :: 3',
            'Programming Language :: Python :: 3.4',
            'Programming Language :: Python :: 3.5',
            'Topic :: Internet :: WWW/HTTP',
            'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
        ],
    )

    例子中的配置项看起来有点复杂,实际简单得不要不要的。耐心点,就完全不是问题。

    8. 执行打包动作

    django-polls目录内,运行 "python setup.py sdist命令。这将会创建一个dist目录,并生成django-polls-0.1.tar.gz打包文件。

    八个步骤完成了,我们的app也就打包好了。

    使用APP包

    实际使用时,我们只需要拿着django-polls-0.1.tar.gz这个文件就可以了。

    在安装包的时候,最好是以个人用户的身份安装,而不是全系统范围的身份。这样可以有效减少给别的用户带去的影响或被别的用户影响。当然,最好的方式是在virtualenv环境,这种类似隔离的沙盒环境中使用(此时,不需要--user选项)。

    安装:

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

    安装成功后,在当前Django项目的INSTALLED_APPS设置中注册django-polls,然后启动服务器,就可以使用这个app了。这个过程中,你可能还需要配置urls、makemigrations、migrate、创建数据实例等动作。

    卸载:

    pip uninstall django-polls

     至此,转载请注明出处。
    本站相关链接:>>Django部署 ]
    
    
  • 相关阅读:
    Mac root Operation not permitted
    case_for_if 各种嵌套相结合
    RANDOM 的用法
    hdu 6681 Rikka with Cake(扫描线)
    2019牛客暑期多校训练营(第十场)F.Popping Balloons(线段树)
    2019 Multi-University Training Contest 2 Harmonious Army(最小割)
    P1361 小M的作物 (最小割)
    2019 Multi-University Training Contest 1 String(序列自动机+贪心)
    2019牛客暑期多校训练营(第九场)E.All men are brothers(并查集+排列组合)
    2019 Multi-University Training Contest 1 Path(最短路+最小割)
  • 原文地址:https://www.cnblogs.com/wcwnina/p/9122469.html
Copyright © 2020-2023  润新知