|
@
目录
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="736946693@qq.com",
- 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才可以上传。
- 在家目录建立.pypirc文件。对于windows用户,即'C:\Users\\.pypirc。对于Linux用户,即'~\.pypirc。
- twine上传
本文由博客一文多发平台 OpenWrite 发布!
来源:https://www.cnblogs.com/UnderTurrets/p/18377676
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|