有过一定的 Python 经验的开发者都知道,当引入第三方包时,我们常常会使用 pip install 命令来下载并导入包。
那么,如何写一个自己的包,上传到 PyPI 呢,其他开发者也可以通过 pip install 命令下载并导入?
本文提供了最简单的示例。
准备好项目目录
创建一个项目目录,其目录结构如下:
/packaging_tutorial /example_pkg __init__.py
其中,packaging_tutorial 是一个文件目录,example_pkg 是一个你希望上传的 Python 包。
注:本人使用的是 virtualenv + virtualenvwrapper 构建的 Python 虚拟环境,因此 python 和 pip 命令(而非 python3 和 pip3)直接对应的是我所指定的虚拟环境(Python 3.6.7)。
创建一些必要文件
再向 packaging_tutorial 中创建一些文件。其目录结构如下:
/packaging_tutorial /example_pkg __init__.py setup.py LICENSE README.md
创建 README.md 文件
在 README.md 可以输入一些介绍项目的文档。
# 测试 这只是一个测试。 - 测试 1 - 测试 2 - 测试 3
创建 setup.py 文件
setup.py 是 setuptools 的构建脚本,它提供了包的各种信息。
在 setup.py 中输入以下代码:
import setuptools with open("README.md", "r") as fh: long_description = fh.read() setuptools.setup( name="example-pkg-your-username", 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", ], )
各个配置的字段的含义应该是不言而喻的,如果想了解更多,参见官网解释。
创建 LICENSE
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.
存档发布版本
一般来说,pip 默认应该都安装了 setuptools 和 wheel。如果没有安装,则安装之:
pip install setuptools wheel -i https://pypi.douban.com/simple
如果安装需要更新,则更新之:
pip install --upgrade setuptools wheel -i https://pypi.douban.com/simple
安装好最新版本后,在 setup.py 所在目录下输入:
python setup.py sdist bdist_wheel
这个命令会在生成一个 dist 目录,里面有两个文件:
dist/ example_pkg_your_username-0.0.1-py3-none-any.whl example_pkg_your_username-0.0.1.tar.gz
tar.gz 是源文件存档,whl 是构建的发布版本。
上传发布版本
安装 twine:
pip install twine -i https://pypi.douban.com/simple
安装好之后,执行 twine 命令(这里,需要注意你已经注册了 PyPI 的账号):
twine upload dist/*
Enter your username: heyulong Enter your password: Uploading distributions to https://upload.pypi.org/legacy/ Uploading example_pkg_heyulong-0.0.1-py3-none-any.whl 100%|██████████████████████████████████████| 5.49k/5.49k [00:01<00:00, 4.66kB/s] Uploading example-pkg-heyulong-0.0.1.tar.gz 100%|██████████████████████████████████████| 4.23k/4.23k [00:01<00:00, 2.21kB/s]
执行完之后,即可在 PyPI 官网上看到自己上传的项目了。
安装你上传的 PyPI 项目,比如我的:
pip install example-pkg-heyulong
这里简单介绍了上传 PyPI 项目的过程。更多细节请关注 PyPI 官网。
以上就是python 如何上传包到pypi的详细内容,更多关于python 上传包到pypi的资料请关注其它相关文章!
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 中国武警男声合唱团《辉煌之声1天路》[DTS-WAV分轨]
- 紫薇《旧曲新韵》[320K/MP3][175.29MB]
- 紫薇《旧曲新韵》[FLAC/分轨][550.18MB]
- 周深《反深代词》[先听版][320K/MP3][72.71MB]
- 李佳薇.2024-会发光的【黑籁音乐】【FLAC分轨】
- 后弦.2012-很有爱【天浩盛世】【WAV+CUE】
- 林俊吉.2012-将你惜命命【美华】【WAV+CUE】
- 晓雅《分享》DTS-WAV
- 黑鸭子2008-飞歌[首版][WAV+CUE]
- 黄乙玲1989-水泼落地难收回[日本天龙版][WAV+CUE]
- 周深《反深代词》[先听版][FLAC/分轨][310.97MB]
- 姜育恒1984《什么时候·串起又散落》台湾复刻版[WAV+CUE][1G]
- 那英《如今》引进版[WAV+CUE][1G]
- 蔡幸娟.1991-真的让我爱你吗【飞碟】【WAV+CUE】
- 群星.2024-好团圆电视剧原声带【TME】【FLAC分轨】