澳门新浦京娱乐场网站-www.146.net-新浦京娱乐场官网
做最好的网站

澳门新浦京娱乐场网站:10中文文档,打包发布

亲自入手写一个python库(二),入手写python库

引言

经过上一节中所述,我们搭建好了八个Python碰着用于库开垦,大家在那一节真正初阶搭建3个库,并将其发表。

花色文书档案结构

首先大家先营造出自身项指标文书档案结构,首先是LICENSE和README.md,那多少个文件并不是供给的,但是最为将其丰裕,方便人家精通您的项目。README.md是关于本项目标牵线,LICENSE是象征该类型所服从的开源协议,一般MIT用的相比多,其余协商你能够百度谷歌(谷歌)问询一下。

接下去是打包库供给的有的文件,首要有MANIFEST.in和setup.py八个文本。MANIFEST.in表示打包时不会被自动包涵进去的附加文件清单。setup.py是包装程序配置文件,供给设置某些增选。别的,setup.cfg是含有setup.py额外安插音讯的公文,作者从没用到这在那之中的安装,所以本项目中其是空的。

caafinder文件夹就是我们要写的Python程序,我们要留心那么些文件夹里必须有__init__.py那么些文件。

上边是弹指间setup.py的局地简易布署选项,详细请参见官方文书档案。

能够参谋一下:

  • PyPA sample project那是一个官方示例库结构。

  • Python Packaging User Guide那是Python打包的法定英文文书档案。

关于模块

模块也正是库,我们温馨写程序时,平日通过import XX来导入四个急需的模块,在Python中,3个py文件正是三个模块,如多少个abc.py的文件便是二个名字叫abc的模块。

您可能还想到,假若差别的人编写的模块名同样如何做?为了幸免模块名争论,Python又引进了按目录来协会模块的不二等秘书籍,称为包(Package),包是1个饱含__init__.py的文件夹,如图普通话档所示,大家有一个包caafinder,因为它的子级有多少个__init__.py,包caafinder具有database和workspace三个模块。__init__.py能够是空文件,也得以有Python代码,因为__init__.py本身正是3个模块,而它的模块名便是caafinder。

次第打包

经超过实际施下列语句来进展包装:

中间xxx能够是下列两种办法中内部三个:

举个例证:

那时候在根目录出现了dist文件夹,里面有name-version.tar.gz这么些文件,那就是大家要发表到PyPI的削减包了。

-

发布到PyPI

第1我们需求在PyPI上注册二个帐号,并在当地用户根目录下成立文件~/.pypirc,那样之后就无需输入帐号密码了。

接下去,要求在PyPI网址上登记三个项目,网址提供两种办法注册,选拔壹种就可以,最简便易行的是透过上传打包时生成的PKG-INFO文件,生成项目消息。此步骤只需在第一遍发表时操作。

接下去正是最后一步,上传打包好的库。我们这里是用twine,借使条件中并未有安装,需求先采用pip install twine安装就能够。

那时在网页上就足以见到自个儿的源代码包啦,并且能够通过运用pip install packagename,就足以行使大家团结写的Python库了。

祝大家玩的戏谑,希望大家能到Github上扶持点个赞。

作者:Gutierrez

来源:


————广告时间————

马哥指点二零一八年Python自动化运维开荒实战面授班二〇一八年四月伍号伊始,马哥联合BAT、豆瓣等细微互连网Python开拓达人,依据当下公司须要的Python开垦人才开始展览了纵深定制,参预了多量微薄互连网厂商:大众点评、饿了么、腾讯等生产条件真是品种,课程由表及里,从Python基础到Python高档,令你融汇贯通Python基础理论,手把手教学让您具有Python自动化开荒须求的前端分界面开荒、Web框架、大监理体系、CMDB系统、认证沟壍机、自动化流程平台6大实战才具,令你从0开首蜕产生Hold住年薪20万的Python自动化开荒人才

环视2维码领到学习材质**

更加多Python好文请点击【阅读原著】哦

↓↓↓

引言

经过上一节中所述,大家搭建好了1个Python情形用于库开拓,大家在那1节真正发轫搭建三个库,并将其公布。

打包发布Python模块的格局详解,python详解

前言

前些天把自身的VASP文件管理库开始展览了打包并上传出PyPI,今后能够直接通过pip和easy_install来设置VASPy啦(同时招待使用VASP做总计化学的童鞋们加星和加入进去),

VASPy的GotHub地址:
VASPy的PyPI地址:

鉴于自个儿的回忆力真是不咋地,怕时间久了就忘了,于是在此处一气呵成以协和的VASPy程序为例对python的包裹和上传实行下计算。

VASPy包文件结构

第1写贴上来VASPy包的总体文件结构, 前边的剧情都是以此为例举行验证:

VASPy/
├── LICENSE
├── MANIFEST
├── MANIFEST.in
├── README.rst
├── requirements.txt
├── scripts
│  ├── change_incar_parameters.py
│  ├── create_inputs.py
│  └── ...
├── setup.cfg
├── setup.py
├── tests
│  ├── incar_test.py
│  ├── __init__.py
│  ├── oszicar_test.py
│  ├── outcar_test.py
│  ├── testdata
│  │  ├── CONTCAR
│  │  ├── DOS_SUM
│  │  ├── ELFCAR
│  │  └── ...
│  └── ...
└── vaspy
  ├── __init__.py
  ├── iter.py
  ├── matstudio.py
  └── ...

4 directories, 54 files

装进和装置第贰方包的工具

此处大家要求依赖setuptools和pip等工具实行和谐包的包装和揭橥以及安装,假使急需创设成wheel还亟需安装wheel模块。如若python版本>=2.七.玖或许>=三.四,setuptools和pip是早就设置好的,也许须要开始展览翻新到新型版本

pip install -U pip setuptools

能够使用包管理工科具,比方

yum install pip
sudo apt-get install pip

透过get-pip.py脚本安装,如果检查实验到未有设置wheel和setuptools也会自动安装

python get-pip.py

切切实实的工具安装和介绍就不多讲了,能够请参见requirements for installing packages

包中差异文件的成效

setup.py

其一文件是包装整个项目最根本的文本,它在那之中提供了多个第一的功能:

setup()函数,此函数的参数钦点了什么样布署本身的档案的次序。
命令行工具,包罗打包,测试,公布等。可以透过下边包车型客车通令查看;

python setup.py --help-commands

setup.cfg

此文件包蕴了营造时候的有个别暗中同意参数比方营造bdist_wheel的时候的--universal参数

[bdist_wheel]
universal=1

如此每一遍打包的时候就能够暗许使用--universal参数了,效果类似:

python setup.py bdist_wheel --universal

README.rst

本条最初自个儿是用markdown写的,打包宣布到PyPI之后发掘PyPI不匡助markdown的渲染,页面上真是一片混乱,于是就用reStrutruedText的语法重新写了三回。毕竟标识语言语法基本上能够秒上手,实在特别找个模板比葫芦画瓢就行。
reStructureText的语法规则可参照官方文书档案:Quick reStructuredText

其实还有1种方法正是应用pandoc将markdown转变到rst格式,一种方便人民群众的方法便是选取pyandoc模块在宣布的时候自动转变。
具体方法能够参照:Use 马克down README's in Python modules

MANIFEST.in

此文件在卷入的时候告诉setuptools还供给相当打包这一个文件,比如小编VASPy中的单元测试的测试数据文件笔者就应用那几个文件将其包蕴进来。当然README,LICENSE那个也能够经过它来一齐打包进去。
上面是本身自身的MANIFEST.in的情节:

include README.rst
include requirements.txt
include LICENSE
recursive-include scripts *
recursive-include tests *

实际的语法规则能够参照:The MANIFEST.in template

vaspy/

此文件夹就是vaspy源代码所在的包。

tests/

此文件夹也是一个子包,包罗了单元测试脚本,为了能选用python setup.py test实行单元测试,特地增多了__init__.pys使其产生贰个包。

setup()的参数

此间只介绍自个儿利用的多少个参数,别的参数的切实可行行使能够参考:

name

versions = "vaspy"

是一切项目标名字,打包后会使用此名字和版本号。

version

from vaspy import __version__
version = __version__

description

是八个回顾的对项指标叙述,一般一句话就好,会显得在pypi上名字下端。

long_description

是叁个长的叙说,相当于对品种的叁个简洁,假设此字符串是rst格式的,PyPI会自动渲染成HTML显示。这里能够一向读取README.rst中的内容。

url

包的连天,日常为GitHub上的链接恐怕readthedocs的链接。

packages

供给包涵的子包列表,setuptools提供了find_packages()帮衬大家在根路线下搜寻包,这几个函数distutil是不曾的。

setup_requires

其一参数定义了VASPy安装和胜利运转所要求的别的依赖项(最基本的),使用pip安装的时候会对那些注重项实行安装。
关于这些参数与requirements.txt的界别能够参照:install_requires vs Requirements files

classifier

以此参数提供了壹层层的归类,在PyPI上会将其放入不一样的目录中讲项目实行分类。
现实的categories的称谓和规则参照他事他说加以考察:

test_suite

其1参数能够扶持大家利用

python setup.py test

来跑单元测试,再也没有须要单独再写三个本子比方run_tests.py那样来跑单元测试了。
此参数的合法表达:

A string naming a unittest.TestCase subclass (or a package or module containing one or more of them, or a method of such a subclass), or naming a function that can be called with no arguments and returns a unittest.TestSuite. If the named suite is a module, and the module has an additional_tests() function, it is called and the results are added to the tests to be run. If the named suite is a package, any submodules and subpackages are recursively added to the overall test suite.

约等于说那几个参数基本上能用各个类型的参数:

接收unittest.TestCase子类,我们能够讲全体单元测试写入3个测试用例中,然后import进来,再传你给test_suite
收起函数对象,此函数对象未有任何参数,且重临二个unittest.TestSuite.那样我们就足以独立写1个函数,将多少个测试用例合并成多个suite然后重返,然后再将函数import进来传给test_suite。

模块和包名称,笔者就是应用这种办法,以前本身的测试都是分开的八个剧本,那样小编增多1个__init__.py就能够将其变为二个包,将包名传给test_suite,setuptools就能神奇的将此包下的具备测试全部跑一边,那样笔者然后再加测试脚本的时候一向就增添新的台本就好了,别的的都不供给转移了。

运作效果:

[email protected]:/mnt/d/Dropbox/Code/CentOS_code/VASPy$ python setup.py test
running test
running egg_info
creating vaspy.egg-info
writing vaspy.egg-info/PKG-INFO
writing top-level names to vaspy.egg-info/top_level.txt
writing dependency_links to vaspy.egg-info/dependency_links.txt
writing manifest file 'vaspy.egg-info/SOURCES.txt'
reading manifest file 'vaspy.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'vaspy.egg-info/SOURCES.txt'
running build_ext
test_compare (tests.incar_test.InCarTest)
Make sure we can compare two InCar objects correctly. ... ok
test_eq (tests.incar_test.InCarTest)
Test __eq__() function. ... ok
...
此处省略若干输出

----------------------------------------------------------------------
Ran 22 tests in 3.574s

OK

公布自身的python包

  1. 先是先去PyPI注册帐号

  2. 配置~/.pypirc如下:

    [distutils] index-servers = pypi pypitest

    [pypi] username:ShaoZhengjiang password:mypassword

    [pypitest] username:ShaoZhengjiang password:mypassword

  3. 接下来注册并上传本身的包到测试服务器

pypi提供了三个测试服务器,大家得以在那一个测试服务器上做测试。

python setup.py register -r pypitest

然后

python setup.py sdist upload -r pypitest

若没不寻常大家相应不会获取任何不当。

  1. 上传至PyPI

若上边的测试成功,我们就能够依据同等的步调将包注册并上传。

python setup.py register -r pypi
python setup.py sdist upload -r pypi

Ok,之后咱们就能够在PyPI(

前言 昨日把自身的VASP文件管理库开始展览了打包并上传出PyPI,以往能够直接通过pip和easy_install来安装...

曾经联合签名到gitbook,想阅读的请转到gitbook: Django 1.10普通话文书档案

迎接我们访问小编的主页:www.liujiangblog.com


第壹部分传送门

其次有的传送门

其三局地传送门

叁.二 模型和数据库Models and databases

三.二.二 查询操作making queries

3.3.8 会话sessions

类型文书档案结构

首先大家先创设出自个儿项目的文书档案结构,首先是LICENSEREADME.md,那四个公文并不是不可缺少的,不过最为将其足够,方便外人了然你的种类。README.md是关于本项目标牵线,LICENSE是表示该类型所遵从的开源协议,一般MIT用的比较多,其余协商你能够百度谷歌(Google)了然一下。

接下去是打包库须求的壹对文书,首要有MANIFEST.insetup.py七个文件。MANIFEST.in意味着打包时不会被机关包括进去的附加文件清单。setup.py是包装程序配置文件,要求安装有个别增选。别的,setup.cfg是带有setup.py额外陈设消息的文本,笔者从不用到那之中的设置,所以本项目中其是空的。

caafinder文件夹正是我们要写的Python程序,我们要留意这几个文件夹里必须有__init__.py以此文件。

├── LICENSE 
├── README.md 
├── MANIFEST.in 
├── caafinder 
│ ├── __init__.py 
│ ├── workspace.py 
│ ├── database.py 
├── setup.cfg 
├── setup.py

上边是刹那间setup.py的一部分简短计划选项,详细请参见合法文书档案。

from setuptools import setup, find_packages

setup(
    name = 'caafinder',
    version = '0.1.4',
    keywords='ds caa',
    description = 'a library for DS CAA Developer',
    license = 'MIT License',
    url = 'https://github.com/Gutier14/CAAFinder',
    author = 'Luca Liu',
    author_email = 'geekluca@qq.com',
    packages = find_packages(),
    include_package_data = True,
    platforms = 'any',
    install_requires = [],
)

能够参照一下:

  • PyPA sample project那是2个合法示例库结构。
  • Python Packaging User Guide那是Python打包的合法英文文书档案。

This advanced tutorial begins where Tutorial 7 left off. We’ll be turning our Web-poll into a standalone Python package you can reuse in new projects and share with other people.

二.10 高档教程:怎么着编写可采纳的apps

有关模块

模块也正是库,我们温馨写程序时,平日通过import XX来导入3个亟待的模块,在Python中,二个py文件就是三个模块,如四个abc.py的文本正是三个名字叫abc的模块。你可能还想到,如若不一致的人编写的模块名相同怎么做?为了防止模块名争执,Python又引进了按目录来协会模块的办法,称为包(Package),包是三个包罗__init__.py的文本夹,如图普通话档所示,大家有二个包caafinder,因为它的子级有三个__init__.py,包caafinder拥有databaseworkspace多个模块。__init__.py可以是空文件,也得以有Python代码,因为__init__.py本人正是多个模块,而它的模块名正是caafinder

├── caafinder 
│ ├── __init__.py 
│ ├── workspace.py 
│ ├── database.py 

紧接着教程7,从那只后大家初始高档教程部分。我们将投票应用做成二个独门的python包,你能够在新类型利用,或享受给别的人。

2.十.一 重用的定义

The Python Package Index (PyPI)有恢宏的现有可用的Python库。
用作Django的app营地也可以有雅量现有可用的apps。

包?App?
包是python重用代码的方式,以目录的形式体现,需要包含__init__.py文件,采用import的方式导入。
app则是Django专用的包,包含一些通用的Django组件,例如models、tests、urls和views等子模块。

先后打包

透超过实际践下列语句来开始展览打包:

python setup.py xxx

里面xxx能够是下列两种办法中内部叁个:

sdist             create a source distribution (tarball, zip file, etc.) 
bdist             create a built (binary) distribution 
bdist_dumb        create a "dumb" built distribution 
bdist_rpm         create an RPM distribution 
bdist_wininst     create an executable installer for MS Windows 
bdist_egg         create an "egg" distribution

举个例证:

python setup.py sdist #生成的文件支持 pip

那时在根目录出现了dist文件夹,里面有name-version.tar.gz这几个文件,那正是咱们要宣布到PyPI的压缩包了。

If you haven’t recently completed Tutorials 1–7, we encourage you to review these so that your example project matches the one described below.

2.拾.二 你的品类和可采用的app

经过前边的课程,你的项目布局如下:

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py
    polls/
        __init__.py
        admin.py
        migrations/
            __init__.py
            0001_initial.py
        models.py
        static/
            polls/
                images/
                    background.gif
                style.css
        templates/
            polls/
                detail.html
                index.html
                results.html
    tests.py
    urls.py
    views.py
    templates/
        admin/
            base_site.html

它早已颇具的project和app分离的规则。可是还要求二个包裹的经过。

发布到PyPI

首先大家供给在PyPI上登记贰个帐号,并在本地用户根目录下成立文件~/.pypirc,那样以后就不须要输入帐号密码了。

[distutils]
index-servers=pypi

[pypi]
repository = https://pypi.python.org/pypi
username = <username>
password = <password>

接下来,需要在PyPI网站上注册多少个连串,网址提供三种艺术注册,选用壹种就能够,最轻易易行的是因此上传打包时生成的PKG-INFO文件,生成项目音信。此步骤只需在第二次揭露时操作。

接下去就是最终一步,上传打包好的库。大家那边是用twine,借使条件中并未有安装,须求先接纳pip install twine安装就可以。

twine upload dist/*

那儿在网页上就足以见到自个儿的源代码包啦,并且能够通过运用pip install packagename,就能够动用我们温馨写的Python库了。

祝我们玩的心潮澎湃,希望大家能到Github上帮助点个赞。

要是你还未变成课程一-柒,大家提出您到家它们,令你的示范项目与下部描述的同样

2.十.三 安装一些不能缺少工具

行使setuptools和pip来打包大家的app。请先安装他们。

Reusability matters¶

二.10.4 打包你的app

包裹的情致是让你的app具备壹种奇特的格式,使得它更便于棉被服装置和动用。

  1. 首先,在Django项目外面,为您的polls应用,策画3个父目录,取名django-polls;

    为你的app选用一个正好的名字:
    在取名前,去PYPI寻找一下是否有重名或冲突的包已经存在。提出给包名加上“django-”的前缀。名字中最终叁个圆点的前面部分在INSTALLED_应用程式S中一定要不二法门,不可能和别的Django的contrib packages中的重名,比如auth、admin、messages等等你。

  2. 拷贝polls目录到该目录内;

  3. 开创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
-----------
64 Chapter 2. Getting started
Django Documentation, Release 1.10.2a1
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.
  1. 成立贰个django-polls/LICENSE版权表明文件。大许多Django相关的app都依据BSD版权。
  2. 接下去创制3个setup.py文件,用于编写翻译和安装app。怎么样成立那个,请前往setuptools的法定文档获取详细的课程,本文不关乎。具体内容如下:

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',
        # 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',
    ],
)
  1. 暗许唯有python的模块和包会被打包进大家的app内。为了包涵部分附加的文书,须求创制四个MANIFEST.in文件。为了将静态文件,模板等等非python语言编写的公文打包入内,大家需求在django-polls/MANIFEST.in文件内写入:
    include LICENSE
    include README.rst
    recursive-include polls/static *
    recursive-include polls/templates *
  1. 该手续可选,然则刚强推荐,将详细的辨证文书档案一齐打包。成立三个空的目录django-polls/docs,用于放置你的app相关文书档案。同时不要忘了,在django-polls/MANIFEST.in文件内写入壹行recursive-include docs *。须要留意的是,假使docs目录是空的,那么它不会被打包进去。当然,许多apps通过在线的网址提供文书档案阅读。
  2. 在你的django-polls目录内,运转python setup.py sdist命令。那将会成立一个dist目录,并编写翻译成功你的新包,django-polls-0.一.tar.gz。

可选拔很重大¶

It’s a lot of work to design, build, test and maintain a web application. Many Python and Django projects share common problems. Wouldn’t it be great if we could save some of this repeated work?

规划、构建、测试和保证叁个网页应用须求做过多行事。诸多Python 和 Django 项目都会遇见有些共性难点。如若我们能不另行的造轮子,岂不是很棒。

Reusability is the way of life in Python. The Python Package Index (PyPI) has a vast range of packages you can use in your own Python programs. Check out Django Packages for existing reusable apps you could incorporate in your project. Django itself is also just a Python package. This means that you can take existing Python packages or Django apps and compose them into your own web project. You only need to write the parts that make your project unique.

可重用性在Python 中是一种分布的艺术。
Python包索引 (PyPI)网站具备大量的包,你能够在你和谐的Python程序中运用。
翻开一下Django Packages中已经存在的可选择的应用,你能够把它们放到你的项目中。
Django 自个儿也只是3个Python 包。
那代表你可以得到已经存在的Python包和Django应用并将它们融入到你和睦的网页项目。你只需求编写制定你项目标独有的局地代码。

Let’s say you were starting a new project that needed a polls app like the one we’ve been working on. How do you make this app reusable? Luckily, you’re well on the way already. In Tutorial 3, we saw how we could decouple polls from the project-level URLconf using an include. In this tutorial, we’ll take further steps to make the app easy to use in new projects and ready to publish for others to install and use.

假使说你正在起头2个新的连串,供给三个像大家正在编纂的投票应用。你怎么让该利用可选拔?幸运的是,其实你早就在那条道路上了。在教程 3中,我们见到大家能够怎么采纳include将投票应用从种类级其他UOdysseyLconf 解耦。在本教程中,大家将更为令你的利用更易于复用到新的类型中,而且能够公布给任何人设置和平运动用。

二.拾.五 使用你本人的包

在安装包的时候,最好是以个人身份安装,而不是全系统范围的地位。这样能够有效压缩给其余用户带去的震慑或被别的用户影响。当然,最佳的方法是在virtualenv蒙受下,类似隔断的沙盒蒙受。

  1. 使用pip安装:pip install --user django-polls/dist/django-polls-0.1.tar.gz
  2. 今后您能够在等级次序中选拔这些包了
  3. 卸载:pip uninstall django-polls

Package? App?

A Python package provides a way of grouping related Python code for easy reuse. A package contains one or more files of Python code (also known as “modules”).

Python package提供了可让壹组相关性代码复用的艺术,多个手提包含三个可能多python文件(也正是大家常说的模块)

A package can be imported with import foo.bar or from foo import bar. For a directory (like polls) to form a package, it must contain a special file init.py, even if this file is empty.

三个包能够通过import foo.bar or from foo import bar方法导入。借使是一个索引(如polls)要做成一个包,必供给包罗2个奇怪文件init.py,就算那些文件是空。

A Django application is just a Python package that is specifically intended for use in a Django project. An application may use common Django conventions, such as having models, tests, urls, and views submodules.

1个Django应用正是只有用于Django项目中Python包。贰个应用能够依照常见的Django 约定,比如具有models、tests、urls和views 子模块。

Later on we use the term packaging to describe the process of making a Python package easy for others to install. It can be a little confusing, we know.

将python包变的让其余人更易于安装的进程,大家誉为打包。最近对此你的话也会有一点困惑。

2.10.陆 宣布你的app

你可以:

  • 通过邮件的款式发送给朋友
  • 上传包到您的网址
  • 推送到一个当着的货仓,比方PyPI,github等

https://packaging.python.org/distributing/#uploading-your-project-to-pypi是怎么着上传到PyPI的学科。

Your project and your reusable app¶

2.10.7 如何在virtualenv中安装python的包

近期,大家设置polls应用作为2个用户库,它有点毛病:

  • 修改用户库会影响到你系统上的别样Python软件
  • 您不可能同时运维此包的四个版本

解决那一个难题最棒的格局就是使用virtualenv。详见

您的档期的顺序以及可复用的app¶

After the previous tutorials, our project should look like this:

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py
    polls/
        __init__.py
        admin.py
        migrations/
            __init__.py
            0001_initial.py
        models.py
        static/
            polls/
                images/
                    background.gif
                style.css
        templates/
            polls/
                detail.html
                index.html
                results.html
        tests.py
        urls.py
        views.py
    templates/
        admin/
            base_site.html

澳门新浦京娱乐场网站:10中文文档,打包发布Python模块的方法详解。You created mysite/templates
in Tutorial 7, and polls/templates in Tutorial 3. Now perhaps it is clearer why we chose to have separate template directories for the project and application: everything that is part of the polls application is in polls. It makes the application self-contained and easier to drop into a new project.

你在教程 2中创建了mysite/templates
,在教程 3中创建了polls/templates。
现行反革命您可能进一步显然为何大家为项目和使用采用独立的模板目录:属于投票应用的某个全体在polls目录中。那使得该应用只包括自身的东西,而且越来越便于放到一个新的类型中。

The polls directory could now be copied into a new Django project and immediately reused. It’s not quite ready to be published though. For that, we need to package the app to make it easy for others to install.

现行反革命能够拷贝polls目录到多个新的Django项目并及时重用。纵然它还不可能充裕打算好到能够及时公布。所以,大家要求打包这一个利用来让它对别的人易于安装。

二.11 接下去学怎么样

本节主要介绍Django文书档案的划分,各部分的核心,怎么样找到本身感兴趣的开始和结果。
鉴于此部分和文书档案最前头的目录导航重复较多,并且相比简单,就不翻译了。

二.1一.1 在文书档案中寻觅
二.1一.2 文档是怎么着协会的
2.11.三 文书档案是怎样翻新的
二.1一.四 从何地得到文档
二.1壹.伍 分裂版本之间的界别

Installing some prerequisites¶

贰.12 编写你的首先个Django补丁

**待翻译!**

设置一些内需的东西¶

The current state of Python packaging is a bit muddled with various tools. For this tutorial, we’re going to use setuptools to build our package. It’s the recommended packaging tool (merged with the distribute
fork). We’ll also be using pip to install and uninstall it. You should install these two packages now. If you need help, you can refer to how to install Django with pip. You can install setuptools the same way.

Python 近来有广大封装工具,特别混乱不堪。在本教程中,大家打算选取setuptools来构建我们的包。它是援引的包装工具(已经与distribute
支行合并)。大家还将动用pip来安装和卸载它。未来您应当设置那多个包。假诺您要求援助,你能够参照他事他说加以考查how to install Django with pip。你能够应用同1的法子安装setuptools

Packaging your app¶

卷入你的选择¶

Python packaging refers to preparing your app in a specific format that can be easily installed and used. Django itself is packaged very much like this. For a small app like polls, this process isn’t too difficult.

Python 打包 会将您的利用按自然规则举行处理, 使其更易安装和平运动用。Django 也是以老大相像的办法打包起来的。对于三个像polls这样的小应用,这些进度不是太难。

  1. First, create a parent directory for polls, outside of your Django project. Call this directory django-polls.

第一,成立2个polls的父目录,在Django项目目录外。目录名叫django-polls

Choosing a name for your app

When choosing a name for your package, check resources like PyPI to avoid naming conflicts with existing packages. It’s often useful to prepend django- to your module name when creating a package to distribute. This helps others looking for Django apps identify your app as Django specific.

当为你的包选拔二个名字时,检查一下PyPI中的能源以制止与已经存在的包争持。当创设三个要揭橥的包时,在您的模块名字前边加上django-常常很有用。 这促进别的正在搜寻Django应用的人分别你的运用是专程用于Django的。

Application labels (that is, the final part of the dotted path to application packages) must be unique in INSTALLED_APPS . Avoid using the same label as any of the Django contrib packages, for example auth, admin, or messages.

应用的价签(应用的包的点分路线的结尾巴部分分)在 INSTALLED_APPS 中必须唯1。防止选拔与Django的contrib 包 中任何贰个施用一样的竹签,比方auth、admin和messages。

  1. Move the polls directory into the django-polls directory.

将polls目录移动到django-polls

  1. Create a file django-polls/README.rst with the following contents:

始建一个包括以下内容的文件django-polls/README.rst:

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.
  1. Create a django-polls/LICENSE file. Choosing a license is beyond the scope of this tutorial, but suffice it to say that code released publicly without a license is useless. Django and many Django-compatible apps are distributed under the BSD license; however, you’re free to pick your own license. Just be aware that your licensing choice will affect who is able to use your code.

创设多少个django-polls/LICENSE文件。如何挑选License凌驾本教程的限制,但值得壹说的是, 公开表露的代码假诺未有License是不要用处的。Django和数不清与Django包容的运用以BSD License 发表;可是,你能够随意挑选本身的License。只需清楚您所采用的License,将调整何人能运用你的代码.

  1. Next we’ll create a setup.py file which provides details about how to build and install the app. A full explanation of this file is beyond the scope of this tutorial, but the setuptools docs have a good explanation. Create a file django-polls/setup.py with the following contents:

下一步我们将创建3个setup.py 文件,它含有了什么构建和安装该利用的详细消息。该公文的事无巨细分解跨越了本课程的范围,setuptools 文档 已详细表明。
创造三个文件django-polls/setup.py,其剧情如下:

django-polls/setup.py

import os
from setuptools import 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=['polls'],
    include_package_data=True,
    license='BSD License',  # example license
    description='A simple Django app to conduct Web-based polls.',
    long_description=README,
    url='http://www.example.com/',
    author='Your Name',
    author_email='yourname@example.com',
    classifiers=[
        'Environment :: Web Environment',
        'Framework :: Django',
        '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.2',
        'Programming Language :: Python :: 3.3',
        'Topic :: Internet :: WWW/HTTP',
        'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
    ],
)
  1. Only Python modules and packages are included in the package by default. To include additional files, we’ll need to create a MANIFEST.in file. The setuptools docs referred to in the previous step discuss this file in more details. To include the templates, the README.rst and our LICENSE file, create a file django-polls/MANIFEST.in with the following contents:

暗中认可唯有Python模块和包会包括进包中。假若供给包含额外的公文,大家须要创制一个MANIFEST.in文件。上一步提到的setuptools 文书档案对那个文件有更详细的评论。如若要含有模板、README.rst和大家的LICENSE 文件,创造贰个文书django-polls/MANIFEST.in,其情节如下:

django-polls/MANIFEST.in

include LICENSE
include README.rst
recursive-include polls/static *
recursive-include polls/templates *
  1. It’s optional, but recommended, to include detailed documentation with your app. Create an empty directory django-polls/docs for future documentation. Add an additional line to django-polls/MANIFEST.in:

含蓄你的施用的详细文书档案,纵然那是可选的,但是推荐您如此做。创立django-polls/docs目录用于保存以往的文书档案。然后再django-polls/MANIFEST.in增添1行:

recursive-include docs *

Note that the docs directory won’t be included in your package unless you add some files to it. Many Django apps also provide their documentation online through sites like readthedocs.org.

注意docs不会含有进你的包中唯有您增添一些文本到它上边。
成都百货上千Django应用还透过类似readthedocs.org诸如此类的站点提供它们的在线文书档案.

  1. Try building your package with python setup.py sdist
    (run from inside django-polls). This creates a directory called dist
    and builds your new package, django-polls-0.1.tar.gz.

由此命令python setup.py sdist(在django-polls目录内施行)来打包,那会创制三个dist目录并创设3个新包:django-polls-0.一.tar.gz。

For more information on packaging, see Python’s Tutorial on Packaging and Distributing Projects.

更加的多打包相关的新闻请看Tutorial on Packaging and Distributing Projects.

Using your own package¶

应用你和睦的包¶

Since we moved the polls directory out of the project, it’s no longer working. We’ll now fix this by installing our new django-polls package.

鉴于我们将polls目录移出了档期的顺序,它已不知道该如何是好符合规律使用。我们今后透过安装大家新创设的django-polls包来修复这么些标题。

Installing as a user library

作为用户级其他库安装

The following steps install django-polls as a user library. Per-user installs have a lot of advantages over installing the package system-wide, such as being usable on systems where you don’t have administrator access as well as preventing the package from affecting system services and other users of the machine.

以下的步子将安装django-polls 成有个别用户的库。用户品级的安装比系统级其他安装有数不胜数独到之处,举个例子将包运维在普通用户等第上不止不会潜移默化系统服务还不会潜移默化别的用户

Note that per-user installations can still affect the behavior of system tools that run as that user, so virtualenv is a more robust solution (see below).

瞩目依照用户的装置依然能够影响以该用户身份运维的连串工具,所以virtualenv 是更健康的消除办法(见下文)。

  1. To install the package, use pip (you already installed it, right?):

用pip命令来安装包(你早就设置了,对吧?)

pip install --user django-polls/dist/django-polls-0.1.tar.gz
  1. With luck, your Django project should now work correctly again.
    Run the server again to confirm this.
    碰巧的是,你的Django项目又再一次不荒谬办事了。你能够运维服务器来注脚。

  2. To uninstall the package, use pip:

用以下命令卸载那么些包:

pip uninstall django-polls

Publishing your app¶

颁发你的运用¶

Now that we’ve packaged and tested django-polls, it’s ready to share with the world! If this wasn’t just an example, you could now:

未来您已经打包并测试了django-polls,它曾经希图好公开荒布到满世界了!假如这不唯有是例证,你现在能够:

  • Email the package to a friend.

  • 邮件发送给你的爱侣

  • Upload the package on your website.

  • 上传到你的站点

  • Post the package on a public repository, such as the Python Package Index (PyPI). packaging.python.org has a good tutorial for doing this.

提交到3个公开的商旅源。 the Python Package Index (PyPI). packaging.python.org 有1个蛮好的教程 a good tutorial

Installing Python packages with virtualenv¶

用virtualenv安装Python包¶

Earlier, we installed the polls app as a user library. This has some disadvantages:

前方,大家以用户等第安装了polls应用。那有1对不利的地点:

  • Modifying the user libraries can affect other Python software on your system.

  • 更改用户的库恐怕会影响到系统里别的Python程序

  • You won’t be able to run multiple versions of this package (or others with the same name).

  • 您不也许还要跑那个包的七个版本(或然别的同名的包)

Typically, these situations only arise once you’re maintaining several Django projects. When they do, the best solution is to use virtualenv. This tool allows you to maintain multiple isolated Python environments, each with its own copy of the libraries and package namespace.

当您维护几个Django项目时,这种意况会平常出现。境遇了这几个主题材料,最佳的消除办法是使用virtualenv。那个工具允许你维护多少个分其余Python意况,各类都具备它和煦的库和包的命名空间。

本文由澳门新浦京娱乐场网站发布于服务器,转载请注明出处:澳门新浦京娱乐场网站:10中文文档,打包发布