python工程代码如何打包

  1. 创建一个空文件夹 example_pkg, 再添加一个同名的子文件夹,包含一个init.py文件. 如下图所示:

     /example_pkg
      /example_pkg
      \__init\__.py
    
  2. 在 _init_.py 文件里面添加如下数据:

name = "example_pkg"

  1. 添加 package 的其他文件
    现在,您将创建一些文件来打包这个项目,并为分发做好准备。创建下面列出的新文件——您将在以下步骤中添加内容。

    /example_pkg
    /example_pkg
      __init__.py
    setup.py
    LICENSE
    README.md
    
  2. 创建 setup.py 文件

    import setuptools
    
    with open("README.md", "r") as fh:
    long_description = fh.read()
    
    setuptools.setup(
        name="example_pkg",
        version="0.0.1",
        author="Example Author",
        author_email="author@example.com",
        description="A small example package",
        long_description=long_description,
        long_description_content_type="text/markdown",
        url="https://github.com/pypa/sampleproject",
        packages=setuptools.find_packages(),
        classifiers=[
              "Programming Language :: Python :: 3",
              "License :: OSI Approved :: MIT License",
              "Operating System :: OS Independent",
        ],
    )
    
  • name 包名. 这可以是任何名字,只要包含字母、数字、''和'-'。它也不能在pypi.org上使用。.
  • version 是包的版本 PEP 440
  • author and author_email 用于确定包装的作者
  • description 描述.
  • long_description 是对包裹的详细描述。这在Python包索引上的包裹细节包上显示。在这种情况下,冗长的描述是从“README”中加载的。这是一种常见的模式。
  • long_description_content_type 告诉索引什么类型的标记用于长描述。在这种情况下,它是Markdown.
  • url 是项目主页的URL。对于许多项目,这将只是一个链接到GitHub、GitLab、Bitbucket或类似的代码托管服务。
  • packages is a list of all Python import packages that should be included in the distribution package. Instead of listing each package manually, we can use find_packages() to automatically discover all packages and subpackages. In this case, the list of packages will be <cite>example_pkg</cite> as that’s the only package present.
  • classifiers tell the index and pip some additional metadata about your package. In this case, the package is only compatible with Python 3, is licensed under the MIT license, and is OS-independent. You should always include at least which version(s) of Python your package works on, which license your package is available under, and which operating systems your package will work on. For a complete list of classifiers, see https://pypi.org/classifiers/.
  1. 创建README.md

     # Example Package
     This is a simple example package. You can use
     [Github-flavored Markdown](https://guides.github.com/features/mastering-markdown/) 
     to write your content.
    
  2. Creating a LICENSE

对于上传到Python包索引的每个包裹来说,包含一个许可证是很重要的。这告诉用户安装包的条款,他们可以使用你的包。为了帮助选择许可证,请参阅https://choosealicense.com/。一旦您选择了许可,打开许可并输入许可文本。例如,如果你选择了MIT的许可

Copyright (c) 2018 The Python Packaging Authority

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

  1. 生成分布档案
  • 确保安装了最新版本的setuptoolswheel

python -m pip install --user --upgrade setuptools wheel

image.png

  • 现在,在安装的同一目录下运行这个命令setup.py所在路径:

python3 setup.py sdist bdist_wheel

  • 这个命令应该输出大量的文本,一旦完成,就应该在dist目录中生成两个文件:

     dist/
      example_pkg-0.0.1-py3-none-any.whl
      example_pkg-0.0.1.tar.gz
    
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,701评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,649评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,037评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,994评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,018评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,796评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,481评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,370评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,868评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,014评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,153评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,832评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,494评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,039评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,437评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,131评论 2 356

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,336评论 0 10
  • 《时间》 天气又转凉了,我想是因为: 冬天也快到了—— 外面风吹草动,树在飘摇 我看到,大马路上每个人 都有点颤抖...
    桐子树下阅读 372评论 9 21
  • 31岁又怎样,书里好像并没有给出答案,尽管讲述了31个31岁的故事,但似乎也只是在说,31岁不会怎么样。可我...
    麦乐迪阅读 1,426评论 1 2
  • 很多人去看中医,都会被告知“湿气重”,湿是从何而来的。湿的存在有三个因素: 1.因为吃了过多的油腻物,消化不了,...
    珍善堂阅读 551评论 0 0
  • 近观刘鑫、江歌案件有感。 案件之过程已不想过多叙说,单论其背后之人性。 古有荀子《性本恶》思想、孟子《...
    鹏_87da阅读 306评论 0 0