时间:2021-05-22
写过 Python 程序的小伙伴们都知道,需要 import 个非 Python 自带的软件包时,都要用到 pip 这个程序。平时我们都是用 pip,如果我们写好了一个程序,想让大家都能用的到,那么是不是也可以通过 pip 发布出去呢?
答案当然是可以了,这篇文章我们就来看看如何用 pip 发布一个 python 程序。
1. 环境准备
要用 pip 发布 python 程序,首先当然是要安装 Python 和 pip 这两个软件了,以 Ubuntu 16.04 为例:
$ sudo apt update $ sudo apt install -y python python-pipCentOS 和 RedHat 因为 RPM 体系需要依赖于 python,更是默认就安装好了。
另外发布 Pypi,还需要安装一个发布工具, twine ,以及其所依赖的 setuptools、wheel:
$ sudo pip install --upgrade twine setuptools wheel好,到这环境就已经就绪了。
2. 注册帐号
pip 上传代码包是最终保存在 https://pypi.org这个网站上的,所以要用 pip 发布程序,就需要在这个网站上注册一个帐号。
访问该网址进行注册: https://pypi.org/account/register/
注册后还需要进行邮箱验证,流程和普通网站没有任何区别,所以具体步骤就不在这里详细介绍了。
3. 代码结构
要发布 Python 程序,程序的结构必须符合特定的要求,假设要发布的程序名为 example-pkg,基本的目录结构如下:
/example-pkg /example-pkg __init__.py setup.py LICENSE README.md说一下目录和文件的含义:
对于 setup.py 文件,还有必要好好说说,先贴个例子,下面这个例子中,主要是实现了从 /example-pkg/example-pkg/__init__.py 文件中读取 version参数,来配置当前软件的版本,并指定了代码包名(name)、作者(author)、邮箱(author_email)、描述信息(long_description、long_description_content_type)、依赖(install_requires),以及哪些文件不会被打包到程序中(exclude_package_data)。
另外需要提醒大家一点,给程序起名字不要带下划线(_) ,python import 代码包时,是不支持下划线包名的,出现这种情况就比较尴尬,代码装上了,还是用不了。
#!/usr/bin/env pythonimport reimport setuptoolsversion = ""with open('example-pkg/__init__.py', 'r') as fd: version = re.search(r'^__version__\s*=\s*[\'"]([^\'"]*)[\'"]', fd.read(), re.MULTILINE).group(1)with open("README.md", "r") as fh: long_description = fh.read()setuptools.setup( name="example-pkg", version=version, author="example", author_email="author@example.com", description="This is the SDK for example.", long_description=long_description, long_description_content_type="text/markdown", url="http://example.com", install_requires=[ 'requests!=2.9.0', 'lxml>=4.2.3', 'monotonic>=1.5', ], packages=setuptools.find_packages(exclude=("test")), classifiers=( "License :: OSI Approved :: MIT License", "Intended Audience :: Developers", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5" ), exclude_package_data={'': ["example-pkg/test.py", "example-pkg/config.txt"]},)4. 上传和检查
一切准备就绪,下面就可以执行打包命令,产生要上传的代码包了:
$ python setup.py sdist bdist_wheel执行结束后,会产生如下目录和文件:
/example-pkg/dist/ example-pkg-0.0.1-py3-none-any.whl example-pkg-0.0.1.tar.gz包有了,就差上传了,执行第一步中安装的 twine 命令:
$ twine upload dist/*Uploading distributions to https://upload.pypi.org/legacy/Enter your username: <your pypi.org username>Enter your password: <your pypi.org password>Uploading example-pkg-0.0.1-py3-none-any.whl100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 45.0k/45.0k [00:01<00:00, 24.0kB/s]Uploading example-pkg-0.0.1.tar.gz100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 43.8k/43.8k [00:00<00:00, 46.2kB/s]上传完毕!不过这里有一点需要注意,上传新版本后,很可能 pip search 还没法查到版本的更新,这是正常的,我理解是
pip search 命令依赖于缓存,所以不会立刻生效。
接下来就让我们下载自己刚刚上传的 python 试试吧:
$ pip install example-pkg$ python>>> import example-pkg>>> example-pkg.name'example-pkg'最后再补充一点,上传可能会失败,提示无法上传指定的代码包,此时很大的可能是 pypi 中已经有了相同的代码包,所以建议在上传之前,先搜索一下是否有重名的代码包,选择一个不冲突的名字,再上传。
例如下面这个例子,example-pkg 已经存在了,如果要再上传,那当然会失败,换个名字就解决了。
$ pip search example-pkgexample-pkg (0.0.7) - A small example package......5. 参考文档
Packaging Python Projects
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一、使用pip安装Python包大多数较新的Python版本都自带pip,因此首先可检查系统是否已经安装了pip。在Python3中,pip有时被称为pip3.
安装刚接触Pillow的朋友先来看一下Pillow的安装方法,在这里我们以MacOS环境为例:(1)、使用pip安装Python库。pip是Python的包管理
python3.4以上的版本中,是默认自带pip的。查看pip的方法下载安装好python后,进入命令行,输入pip-V,即可查看python版本号C:\Use
安装了python3之后,会有pip31.使用pipinstallXXX新安装的库会放在这个目录下面python2.7/site-packages2.使用pip
1、安装Django在命令行模式下使用pip工具来安装Django,pip工具的安装方法见此篇pipinstalldjango2、确认是否安装成功在Python