首页 > 编程语言 >【python教程】打包和发布自己的项目,让别人去pip

【python教程】打包和发布自己的项目,让别人去pip

时间:2024-08-24 13:25:47浏览次数:5  
标签:Development 教程 Language python setup py Programming Python pip

@

目录


1.环境搭建

1.1 换源

  • 在pip安装时使用-i参数,可以指定源。以下有许多种国内源可以选择
https://pypi.tuna.tsinghua.edu.cn/simple
http://mirrors.aliyun.com/pypi/simple/
https://pypi.mirrors.ustc.edu.cn/simple/
http://pypi.hustunique.com/
http://pypi.sdutlinux.org/
http://pypi.douban.com/simple/

1.2 安装wheel

pip install wheel -i https://pypi.tuna.tsinghua.edu.cn/simple

1.3 安装twine

pip install twine -i https://pypi.tuna.tsinghua.edu.cn/simple

1.4 注册PyPI账号

此网址注册一个即可

2.编写setup.py

2.1 项目文件树

  • 你的项目可能是这样的...
xu736946693@ubuntu:~/Desktop/python-template$ tree
.
├── bin
│   └── start.py
├── conf
│   └── yourfile.conf
├── dataBase
│   └── yourDB
├── docs
│   └── introduction.md
├── lib
│   └── yourlib.py
├── LICENSE
├── log
│   └── version.md
├── package_name
│   ├── __init__.py
│   └── module1
│       └── __init__.py
├── README.md
├── res
│   ├── READMEimgRes
│   │   ├── 7ac23192b1904eb790272d8462cec5b8.png
│   │   └── d919d615def3466f9ff73488c4e62aac.png
│   └── yourResource
│       └── resourceFile
├── settings.zip
├── setup.py
└── tests
    └── test.py

12 directories, 16 files

2.2 编写setup.py文件

setup.py文件是用来打包和上传你的包的重要文件,它有固定的编写范式。下面我将给出我的demo并附上详细注释。

from setuptools import setup, find_packages
from os import path

this_directory = path.abspath(path.dirname(__file__))
with open(path.join(this_directory, 'README.md'), encoding='utf-8') as f:
    my_long_description = f.read()


setup(
    # 关于classifiers的描述详见如下
    # https://pypi.org/search/?q=&o=&c=Topic+%3A%3A+Software+Development+%3A%3A+Build+Tools
    classifiers=[
        # 属于什么类型
        "Topic :: Software Development :: Libraries :: Python Modules",

        # 发展时期,常见的如下
        # Development Status:: 1 - Planning
        # Development Status:: 2 - Pre - Alpha
        # Development Status:: 3 - Alpha
        # Development Status:: 4 - Beta
        # Development Status:: 5 - Production / Stable
        # Development Status:: 6 - Mature
        # Development Status:: 7 - Inactive
        "Development Status :: 4 - Beta",

        # 许可证信息
        "License :: OSI Approved :: MIT License",

        # 目标编程语言
        # Programming Language :: C
        # Programming Language :: C++
        # Programming Language :: Python :: 3.4
        # Programming Language :: Python :: 3.5
        # Programming Language :: Python :: 3.6
        # Programming Language :: Python :: 3.7
        # Programming Language :: Python :: 3.8
        # Programming Language :: Python :: 3.9
        "Programming Language :: Python :: 3",
        "Programming Language :: Python :: 3.3",
        "Programming Language :: Python :: 3.4",
        "Programming Language :: Python :: 3.5",
        "Programming Language :: Python :: 3.6",
        "Programming Language :: Python :: 3.7",
        "Programming Language :: Python :: 3.8",
        "Programming Language :: Python :: 3.9",

        # 运行的操作系统
        # "Operating System :: POSIX :: Linux",
        "Operating System :: Microsoft :: Windows",

        # 运行的环境
        # "Environment :: GPU :: NVIDIA CUDA :: 12",

        # 开发的目标用户
        # Intended Audience :: Customer Service
        # Intended Audience :: Developers
        # Intended Audience :: Education
        # ...
        # Intended Audience :: End Users/Desktop
        # Intended Audience :: Financial and Insurance Industry
        # Intended Audience :: Healthcare Industry
        "Intended Audience :: End Users/Desktop",

        # 自然语言
        "Natural Language :: English",
        "Natural Language :: Chinese (Simplified)",

    ],

    # 如果上传时出现ERROR:The user '' isn't allowed to upload to project '',换个名字,长一点无所谓,不能跟别人重复
    name="projectTemplate",
    version="1.0.0",
    author="Han Xu",
    author_email="[email protected]",
    description="This is a project template.",
    long_description=my_long_description,

    # 存放源码的地址,填入gitee的源码网址即可
    # url="https://gitee.com/UnderTurrets/",

    packages=find_packages(),

    # README.md文本的格式,如果希望使用markdown语言就需要下面这句话
    long_description_content_type="text/markdown",

    # 安装过程中,需要安装的静态文件,如配置文件、service文件、图片等
    # data_files=[
    #      ("", ["conf/*.conf"]),
    #      ("/usr/lib/systemd/system", ["bin/*.service"]),
    #            ],

    # 希望被打包的文件
    # package_data={
    #     "":["*.txt"],
    #     "bandwidth_reporter":["*.txt"]
    #            },

    # 不打包某些文件
    # exclude_package_data={
    #     "bandwidth_reporter":["*.txt"]
    #            },

    # 表明当前模块依赖哪些包,若环境中没有,则会从pypi中下载安装
    # install_requires=["requests",],

    # setup.py 本身要依赖的包,这通常是为一些setuptools的插件准备的配置
    # 这里列出的包,不会自动安装。
    # setup_requires=["",],

    # 仅在测试时需要使用的依赖,在正常发布的代码中是没有用的。
    # 在执行python setup.py test时,可以自动安装这三个库,确保测试的正常运行。
    # tests_require=[
    #     "",
    # ],

    # install_requires 在安装模块时会自动安装依赖包
    # 而 extras_require 不会,这里仅表示该模块会依赖这些包
    # 但是这些包通常不会使用到,只有当你深度使用模块时,才会用到,这里需要你手动安装
    # extras_require={
    #     "":  [""],
    # },
)
  • 根据自己的需要更改即可

3.构建

  • 在项目空间下执行如下指令:
python setup.py sdist bdist_wheel
  • 可以看到项目下会自动生成build目录和lib目录等:
xu736946693@ubuntu:~/Desktop/python-template$ tree -L 3
.
├── bin
│   └── start.py
├── build
│   ├── bdist.linux-x86_64
│   └── lib
│       └── package_name
├── conf
│   └── yourfile.conf
├── dataBase
│   └── yourDB
├── dist
│   ├── projectTemplate-1.0.0-py3-none-any.whl
│   └── projectTemplate-1.0.0.tar.gz
├── docs
│   └── introduction.md
├── lib
│   └── yourlib.py
├── LICENSE
├── log
│   └── version.md
├── package_name
│   ├── __init__.py
│   └── module1
│       └── __init__.py
├── projectTemplate.egg-info
│   ├── dependency_links.txt
│   ├── PKG-INFO
│   ├── SOURCES.txt
│   └── top_level.txt
├── README.md
├── res
│   ├── READMEimgRes
│   │   ├── 7ac23192b1904eb790272d8462cec5b8.png
│   │   └── d919d615def3466f9ff73488c4e62aac.png
│   └── yourResource
│       └── resourceFile
├── settings.zip
├── setup.py
└── tests
    └── test.py

4.上传

  • 在项目空间下执行如下指令:
twine upload -u <the usrname of your PyPI account> -p <the password of your PyPI account> dist/<the files you want to upload> 
  • 如果你更新了代码,记得更新setup.py中的版本号,重新构建你的代码,再次上传就好了。

ERROR:The user 'XXX' isn't allowed to upload to project ''

  • 你的软件包名字是PyPI用以区分的唯一标识,因此必须全球唯一

如果上传时出现ERROR:The user 'XXX' isn't allowed to upload to project '',换个名字,长一点无所谓,不能跟别人重复。

2024.1.19更新:

目前PyPI官方强制要求两步验证,同时关闭了在终端中输入账密上传包的方式。目前需要在账户中设置API才可以上传。

  1. 设置API

在这里插入图片描述

  1. 在家目录建立.pypirc文件。对于windows用户,即'C:\Users\<Your name>\.pypirc。对于Linux用户,即'~\.pypirc
  2. twine上传
twine upload dist/*

本文由博客一文多发平台 OpenWrite 发布!

标签:Development,教程,Language,python,setup,py,Programming,Python,pip
From: https://www.cnblogs.com/UnderTurrets/p/18377676

相关文章

  • 前端新入职必备清单,保姆级教程
    前端新人入职的第一天通常就是配置环境,熟悉项目。本文就来分享前端新人入职第一天应该如何配置环境,保姆级教程,值得收藏!本文以Mac电脑为例,使用Windows的小伙伴也可以参考!开发环境Node.js通常我们的项目都是依赖Node.js环境的,所以第一步就来安装Node.js。打开Nod......
  • catvod、TVBox源的格式解析及合并多个源的内容(Python脚本)
    文章目录TVBox官网核心代码分析源内容的结构定义源内容的主体结构解析直播的结构解析ApiConfig其他处理代码核心类分析完整代码参考合并多个catvod、TVBox源的内容(Python脚本)可用catvod、TVBox源参考(最新接口)更新:解决Spider参数覆盖问题TVBox官网TVBox项目索引:htt......
  • Autodesk inventor 2025图文安装教程及下载
    AutodeskInventor2025引入了多个新功能和增强功能,以改善设计体验。以下是一些关键更新:增强的用户界面:用户界面已简化,以提高可访问性和易用性,支持自定义功能区和工具栏。改进的性能:渲染和处理速度的优化提升了整体性能,特别是针对大型组件。高级协作工具:新增更好的协作功能,包......
  • Visio 2021安装教程及相关问题和下载
    MicrosoftVisio2021是一款功能强大的图表和流程图设计工具,提供直观的方式来创建和编辑各种图表类型,如流程图、组织结构图、网络图和平面图等。作为Visio系列的最新版本,Visio2021引入了更加现代化的用户界面,使图表的定制和管理更加简便。此外,Visio2021还增加了多项智......
  • Python文件管理器:一个基于wxPython的桌面应用
    在当今的软件开发世界中,管理大量的源代码文件变得越来越重要。无论是个人项目还是大型团队协作,有一个强大而灵活的文件管理工具都可以大大提高工作效率。今天,我们要介绍一个基于Python和wxPython构建的文件管理器,它专门用于管理.py文件。C:\pythoncode\new\managefiles.py......
  • Python之QRCode
    方法一:生成二维码importqrcode#生成二维码img=qrcode.make(data="你好")#将二维码保存为图片withopen('qrcode_test.png','wb')asf:img.save(f)解码二维码importcv2d=cv2.QRCodeDetector()val,_,_=d.detectAndDecode(cv2.imread('qrcode......
  • 计算机毕业设计推荐-基于python的医院预约门诊平台
    精彩专栏推荐订阅:在下方专栏......
  • 计算机毕业设计推荐-基于python的无人超市管理系统
    精彩专栏推荐订阅:在下方主页......
  • Python小白自用学习日记 | print和input函数(参考“Python_子木”的教程)&pandas的下载
            写论文要分析气象数据,下载后发现是txt格式,看来要学学python做数据处理。真是“书到用时方恨少”。我看的是B站“Python_子木”的教程。电脑里以前装过了VScode,就暂时不下载pycharm了。        仅作为一个超级小白的养成系学习日记吧。大佬们请不用点......
  • 下载小说时,python字符集编码utf-8和GBK的错误处理(慎!)
    创作背景  今天想找本小说看,但是居然只能在网页上能找到资源,作为一名测试工程师,这能忍?多么严重的体验,这还能一起愉快的玩耍了吗?还能好好摸鱼了吗?  果断花点时间,查看页面结构,写个脚本自动请求网页,获取小说内容,并进行储存到本地txt文件中,放在手机里,躺在床上慢慢看。没......