介绍如何将代码上传到PyPi,并通过pip install 方式供所有人进行下载
- 注册Pypi账号
Pypi账号注册
2. 创建上传代码的项目工程
让我们为上传准备代码。首先,应该从代码中删除所有的“print”语句 。当您在使用库时,命令提示符中充斥着不属于您的打印消息,这是很烦人的——因此请将它们全部删除。如果您想要通知用户某些活动,请使用日志记录。
还要确保不要包含存在于函数类之外的代码 ,否则每次有人导入你的库时,这段代码都会运行。如果你想在类中包含示例代码(这是合法的),把它包装到" __main__ "函数中 。
if __name__ == "__main__":
your example code goes here
2.1 创建项目结构
2.1.1 创建项目
创建项目 project
2.1.2 创建存放所有源码的包
- 创建包: 创建一个文件夹,该文件夹的名称与您希望的包名称完全一致,如
cvyuan 。将要传送的所有源码文件和类放到这个文件夹中。 - 创建
__init__.py 的文件。在这个文件中,除了import语句,你什么都不写,它有以下模式:
from packagename.Filename import Classname
__init__.py 文件用于标记你希望用户通过包接口访问哪些类。
源码文件结构如下:
|--Project
|---Mylib
|----- __init__.py
|----- File1.py
|----- File2.py
本例子创建cvyuan包,项目结构如下: __init__.py 文件 Import 访问的类如下:
from cvyuan.FaceMeshModule import FaceMeshDetector
from cvyuan.HandTrackingModule import handDetector
2.1.3 创建PyPi需要的文件
PyPi需要三个文件:
- setup.py
- setup.cfg
- LICENSE.txt
- README.md (optinal but highly recommended)
将所有这些文件放在你的包文件夹之外:
|--Project
|---Mylib
|----- __init__.py
|----- File1.py
|----- File2.py
|---setup.py
|---setup.cfg
|---LICENSE.txt
|---README.md
我们把这些文件一个一个说明一遍
setup.py setup.py 文件包含关于PyPi需要的包的信息,比如它的名称、描述、当前版本等。复制并粘贴以下代码,并替换从你匹配内容:
from distutils.core import setup
setup(
name = 'YOURPACKAGENAME',
packages = ['YOURPACKAGENAME'],
version = '0.1',
license='MIT',
description = 'TYPE YOUR DESCRIPTION HERE',
author = 'YOUR NAME',
author_email = 'your.email@domain.com',
url = 'https://github.com/user/reponame',
download_url = 'https://github.com/user/reponame/archive/v_01.tar.gz',
keywords = ['SOME', 'MEANINGFULL', 'KEYWORDS'],
install_requires=[
'validators',
'beautifulsoup4',
],
classifiers=[
'Development Status :: 3 - Alpha',
'Intended Audience :: Developers',
'Topic :: Software Development :: Build Tools',
'License :: OSI Approved :: MIT License',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.4',
'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6',
],
)
setup.cfg 创建一个名为setup.cfg的新文件。文件中的内容指定如下:
[metadata]
description-file = README.md
LICENSE.txt
使用此文件定义所有license详细信息。最可能的情况是,从这个网站复制-粘贴许可文本到license .txt文件。我总是在我的项目中使用MIT的许可,但请随意使用您自己的许可。
MIT License
Copyright (c) 2018 YOUR NAME
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.
README.md (Optional) 可以通过这个网站创建README文件,创建好后进行下载
3. 将包上传到PyPi
cd 到 setup.py所在的目录
cd "C://PATH//TO//YOUR//FOLDER"
现在,我们用下面的命令创建一个source distribution :
python setup.py sdist
我们将需要使用twine来上传,所以首先通过pip安装twine:
pip install twine
然后,执行如下命令
twine upload dist/*
此时在项目中出现dist文件,文件下面存放我们打包后的源码
注:提示twine不是内部或外部命令 尝试执行如下命令:
python-m twine upload --repository dist/*
您将被要求提供您的用户名和密码 。提供前面用于注册到PyPi的用户名和密码。
恭喜,您的包现在已经上传!访问 *https://pypi.org/project/YOURPACKAGENAME/*在线查看您的包
4 .使用pip安装您自己的包
好,现在我们来测试一下。打开控制台,输入以下命令:
pip install YOURPACKAGENAME
现在打开python SHELL/IDLE并导入你的包,进行项目开发或测试
5 .更新包
如果您能很好地维护您的包,您将需要不时地更改源代码形式。这是很容易的。只需将你的新代码上传到github,创建一个 new release,然后调整setup.py文件(new download_url -根据你的new release tag),然后再次运行setup.py和twin命令(首先导航到你的文件夹!)
python setup.py sdist
twine upload dist/*
最后,通过pip更新你的包,看看你的更改是否有效:
pip install YOURPACKAGE --upgrade
github 代码
参考:https://medium.com/@joel.barmettler/how-to-upload-your-python-package-to-pypi-65edc5fe9c56
|