• Django 2.0 学习(11):Django setuptools


    应用打包

    当前状态的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命令行模式就可以执行卸载命令。

  • 相关阅读:
    文件操作
    匿名函数
    函数
    运算符
    (模板)扩展kmp算法(luoguP5410)
    poj2406(求字符串的周期,kmp算法next数组的应用)
    poj1961(kmp算法next数组应用)
    hdoj1711(kmp算法)
    (模板)poj3461(kmp模板题)
    fzu1704(高斯消元法解异或方程组+高精度输出)
  • 原文地址:https://www.cnblogs.com/love9527/p/8746405.html
Copyright © 2020-2023  润新知