• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    教学以及管理操作教程

    教学以及管理操作教程

    ¥1,000.00 ¥100.00
    阅读更多
  • 特色
    • 展示
    • 关于我们
    • 问答
  • 事件
  • 个性化
  • 博客
  • 联系
  • 站点资源
    有任何问题吗?
    (00) 123 456 789
    weinfoadmin@weinformatics.cn
    注册登录
    恒诺新知
    • 主页
    • 课程

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      教学以及管理操作教程

      教学以及管理操作教程

      ¥1,000.00 ¥100.00
      阅读更多
    • 特色
      • 展示
      • 关于我们
      • 问答
    • 事件
    • 个性化
    • 博客
    • 联系
    • 站点资源

      老俊俊的生信笔记

      • 首页
      • 博客
      • 老俊俊的生信笔记
      • python 学习之 打包上传你的软件到 pypi 官网

      python 学习之 打包上传你的软件到 pypi 官网

      • 发布者 weinfoadmin
      • 分类 老俊俊的生信笔记
      • 日期 2022年2月7日
      测试开头


      人生无常,大肠包小肠

      python 学习之 打包上传你的软件到 pypi 官网

      1引言

      分享一下如何打包我们写好的函数成软件,然后上传到 pypi 官网,方便下载与分享。

      2创建账号

      去官网 https://pypi.org/ 注册好自己的账号:

      python 学习之 打包上传你的软件到 pypi 官网

      3写好函数

      然后把我们的函数写好,如果需要命令行格式的则可以用到 argparse 库,我这里简单写了一个加和函数,返回加和的值:

      def main():
          """
          calculate sum.
          """


          # 导入模块
          import argparse

          parser = argparse.ArgumentParser(usage="test",
                                          description="example test",
                                          epilog="Thank your for your support.")
          # version
          parser.add_argument('-v','--version', action='version', version='%(prog)s 0.0.1')
          # 读取注释类型文件
          parser.add_argument('integers', metavar ='N', type = int, nargs ='+',
                              help ='an integer for the accumulator')

          # 解析参数
          args = parser.parse_args()

          def add_number(number):
              val = sum(number)
              return val

          print(add_number(number=args.integers))

      我们可以运行脚本测试:

      $ python add_number.py -h
      usage: test

      example test

      positional arguments:
        N              an integer for the accumulator

      optional arguments:
        -h, --help     show this help message and exit
        -v, --version  show program's version number and exit

      Thank your for your support.

      $
       python add_number.py 1 2 3
      6

      4文件夹结构

      把函数脚本放在 src 下的 add_number 文件夹里:

      add_number/
      ├── LICENSE
      ├── pyproject.toml
      ├── README.md
      ├── setup.cfg
      ├── src/
      │   └── add_number/
      │       ├── __init__.py
      │       └── add_number.py
      └── tests/

      5打包

      创建 pyproject.toml 文件

      告诉构建工具(如 pip 和 build)构建项目所需的内容,内容如下:

      [build-system]
      requires = [
          "setuptools>=42",
          "wheel"
      ]
      build-backend = "setuptools.build_meta"

      创建配置信息

      有 动态 和 静态 两种形式可以构建,推荐使用静态也就是 setup.cfg格式,动态是 setup.py,以下是区别:

      python 学习之 打包上传你的软件到 pypi 官网

      主要包括一些作者信息,版本号,软件名称,描述信息等:

      示例:

      [metadata]
      name = add_number
      version = 0.0.1
      author = laojunjun
      author_email = 3219030654@stu.cpu.edu.cn
      description = test example.
      long_description = file: README.md
      long_description_content_type = text/markdown
      url = https://github.com/junjunlab/add_number
      project_urls =
          Bug Tracker = https://github.com/junjunlab/add_number/issues
      classifiers =
          Programming Language :: Python :: 3
          License :: OSI Approved :: MIT License
          Operating System :: OS Independent

      [options]
      package_dir =
          = src
      packages = find:
      python_requires = >=3.6

      [options.packages.find]
      where = src

      [options.entry_points]
      console_scripts =
          add_number = add_number.add_number:main

      最后一个代码比较重要,可以让我们的函数在终端命令行里调用执行:

      [options.entry_points]
      console_scripts =
          add_number = add_number.add_number:main

      等号 左边为终端调用执行的函数名称, : 号前为 src 目录下的 add_number 目录下的 add_number.py 脚本里的 main 函数。

      参数详解:

      python 学习之 打包上传你的软件到 pypi 官网

      创建 README.md

      这个为 markdown 格式,来说明你的软件怎么使用及具体描述信息。

      python 学习之 打包上传你的软件到 pypi 官网

      创建 LICENSE

      对于上传到 Python Package Index 的每个包来说,包含一个许可证非常重要。这将告诉安装您的软件包的用户他们可以使用您的软件包的条款。有关帮助选择许可证的信息,请参阅 https://choosealicense.com/。一旦你选择了一个许可证,打开 LICENSE 并输入许可证文本。例如,如果你选择了 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.

      复制一下即可。

      tests 文件夹是个空文件,觉得不用创建也行。

      打包

      之前目录结构:

      (base) junjun@JunJunLab:/mnt/c/Users/admin/Desktop/add_number$ tree ./
      ./
      ├── LICENSE
      ├── README.md
      ├── pyproject.toml
      ├── setup.cfg
      ├── src
      │   └── add_number
      │       ├── __init__.py
      │       └── add_number.py
      └── tests

      3 directories, 6 files

      打包:

      (base) junjun@JunJunLab:/mnt/c/Users/admin/Desktop/add_number$ python3 -m build
      * Creating venv isolated environment...
      * Installing packages in isolated environment... (setuptools>=42, wheel)
      ...
      Successfully built add_number-0.0.1.tar.gz and add_number-0.0.1-py3-none-any.whl

      结束后生成一个新的 dist 目录,含有两个打包好的文件:

      (base) junjun@JunJunLab:/mnt/c/Users/admin/Desktop/add_number$ tree dist/
      dist/
      ├── add_number-0.0.1-py3-none-any.whl
      └── add_number-0.0.1.tar.gz

      0 directories, 2 files

      6上传到 pypi 官网

      接下来上传到官网:

      (base) junjun@JunJunLab:/mnt/c/Users/admin/Desktop/add_number$ python3 -m twine upload dist/*
      Uploading distributions to https://upload.pypi.org/legacy/
      Enter your username:

      接下来输入你的 账号 和 密码 即可,结束后可去 pypi 官网查看并使用 pip 下载使用,这里就不演示了。

      大家可以自己去尝试一下。


      python 学习之 打包上传你的软件到 pypi 官网


      欢迎加入生信交流群。加我微信我也拉你进 微信群聊 老俊俊生信交流群 哦,数据代码已上传至QQ群,欢迎加入下载。

      群二维码:

      python 学习之 打包上传你的软件到 pypi 官网

      老俊俊微信:


      python 学习之 打包上传你的软件到 pypi 官网

      知识星球:


      python 学习之 打包上传你的软件到 pypi 官网


      所以今天你学习了吗?

      欢迎小伙伴留言评论!

      点击我留言!

      今天的分享就到这里了,敬请期待下一篇!

      最后欢迎大家分享转发,您的点赞是对我的鼓励和肯定!

      如果觉得对您帮助很大,赏杯快乐水喝喝吧!



       往期回顾 




      ◀python package: GetTransTool

      ◀python 学习之输出指定长度的 fasta 序列

      ◀基于 GTF 文件提取 CDS 最长转录本序列

      ◀迎接虎年的来到!

      ◀关于 Ribo–seq 的事

      ◀python 提取 CDS 最长的代表转录本序列

      ◀给多组富集点图添加分类?

      ◀argparse 传参之 parse_args() 方法

      ◀argparse 传参之 add_argument() 方法

      ◀跟着 Molecular Cell 绘制折线图+热图

      ◀...

      测试结尾

      请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!

      • 分享:
      作者头像
      weinfoadmin

      上一篇文章

      python package: GetTransTool
      2022年2月7日

      下一篇文章

      对称矩阵绘图 R 包: ggasym
      2022年2月8日

      你可能也喜欢

      8-1651542331
      跟着Nature学绘图(2) 箱线图-累积分布曲线图
      2 5月, 2022
      9-1651542322
      Julia 笔记之字符串
      2 5月, 2022
      0-1651542343
      Julia 笔记之数学运算和初等函数
      1 5月, 2022

      搜索

      分类

      • R语言
      • TCGA数据挖掘
      • 单细胞RNA-seq测序
      • 在线会议直播预告与回放
      • 数据分析那些事儿分类
      • 未分类
      • 生信星球
      • 老俊俊的生信笔记

      投稿培训

      免费

      alphafold2培训

      免费

      群晖配置培训

      免费

      最新博文

      Nature | 单细胞技术揭示衰老细胞与肌肉再生
      301月2023
      lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
      301月2023
      如何快速批量修改 Git 提交记录中的用户信息
      261月2023
      logo-eduma-the-best-lms-wordpress-theme

      (00) 123 456 789

      weinfoadmin@weinformatics.cn

      恒诺新知

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      链接

      • 课程
      • 事件
      • 展示
      • 问答

      支持

      • 文档
      • 论坛
      • 语言包
      • 发行状态

      推荐

      • iHub汉语代码托管
      • iLAB耗材管理
      • WooCommerce
      • 丁香园论坛

      weinformatics 即 恒诺新知。ICP备案号:粤ICP备19129767号

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      要成为一名讲师吗?

      加入数以千计的演讲者获得100%课时费!

      现在开始

      用你的站点账户登录

      忘记密码?

      还不是会员? 现在注册

      注册新帐户

      已经拥有注册账户? 现在登录

      close
      会员购买 你还没有登录,请先登录
      • ¥99 VIP-1个月
      • ¥199 VIP-半年
      • ¥299 VIP-1年
      在线支付 激活码

      立即支付
      支付宝
      微信支付
      请使用 支付宝 或 微信 扫码支付
      登录
      注册|忘记密码?