打包和发布 Python 代码?
Python 提供了一种非常简单的创建或发布包的方法。
Python 中的包管理可通过不同的工具实现−
Pip- 它仍然是首选之一,因为它几乎消除了操作系统中软件包的任何手动安装和更新。它管理包的完整列表及其相应的版本号,从而促进在独立、独立的环境中精确复制整个包组。
Python 包索引 (PPI) 是一个公共包存储库,其中包含用户提交的包,可以使用 pip 安装。即。 pip install package_name。
以下是如何上传包的分步过程。
步骤 1:上传包
我假设您已准备好发布包。如果没有,请按照以下步骤创建 python 包或模块,好处是它非常简单−
用您的代码创建一个 python 文件,将其命名为 myfirstPackage.py 或 myPackageName.py 这是一个模块。一个包含数据的文件 (myfirstPackage.py)。我们可以导入它或做任何我们想做的事情。
- 将其变成一个包:
Just add an empty __init__.py file to it. echo >> __init__.py or use touch commandtouch __init_.py
$dir Volume in drive C has no label. Volume Serial Number is 8CD6-8D39 Directory of c:\Python\Python361\firstPackage 08-04-2019 05.44 PM <DIR> . 08-04-2019 05.44 PM <DIR> .. 08-04-2019 02.25 PM 47 myFirstPackage.py 08-04-2019 05.44 PM 13 __init__.py
从上面可以看出 firstPackage 目录中有两个文件。
就是这样,一个包含两个文件(__init__.py 和 myfirstPackage.py)的目录被称为包(myHelloModule)。
打包你的项目
首先,克隆示例项目并为其指定模块名称−
git clone https://github.com/pypa/sampleproject firstPackage
重要的文件是−
Setup.py – 它允许我们指定项目配置,并运行打包命令:例如,尝试此命令:python setup.py --help
Setup.cfg 是一个 INI 文件,包含 setup.py 命令的选项默认值
README.rst 使用 reStructuredText 描述了项目的目标。
将您的模块复制到这个新文件夹中并删除现有的“sample” 模块−
└───firstPackage │ LICENSE.txt │ MANIFEST.in │ myFirstPackage.py │ README.md │ setup.cfg │ setup.py │ tox.ini │ __init__.py
配置名称、版本、说明
编辑 setup.py 以包含有关 Python 包的基本信息−
setup.py
import setuptools with open("README.md", "r") as fh: long_description = fh.read() setuptools.setup( name="firstPackage", version="0.0.1", author="Rajesh Joshi", author_email="callraj.joshi@gmail.com", description="my First 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", ], )
您的许可证文件将类似于−
MIT License Copyright (c) [2019] [firstPackage] 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
## firstPackage 这是一个示例包,用于了解创建和发布包的步骤。
实际打包步骤
在环境中安装或更新 setuptools 和 wheel 包。
>pip install wheel twine setuptools –upgrade
首先,创建一个源分发版。这种“分发版”(即包)在通过 pip 安装时需要构建步骤。
>python setup.py sdist
现在我们要安装一个“wheel” (构建的包)比源分发版更容易安装。
>python setup.py bdist_wheel
希望包能够构建,您可以在 firstpackage 文件夹中的 dist 目录中的 setup.py 文件旁边看到包的压缩文件。
上传您的包
现在在您选择的其他位置创建一个新的虚拟环境并激活它,就像下面一样−
c:\Users\rajesh>virtualenv myPackage 使用基本前缀"c:\python\python361" c:\Users\rajesh\myPackage\Scripts\python.exe 中的新 python 可执行文件 正在安装 setuptools、pip、wheel...完成。 c:\Users\rajesh\myPackage>.\Scripts\activate (myPackage) c:\Users\rajesh\myPackage>
将上面创建的 zip 文件复制到新环境中。
>pip install firstPackage-0.0.1.tar.gz
要验证您的软件包是否已安装在激活的环境中,只需运行 pip list 即可显示当前环境中所有软件包的列表。
>pip list Package Version ------------ ------- firstPackage 0.0.1 pip 19.0.3 setuptools 41.0.0 wheel 0.33.1
现在是时候将包发布到 PyPI 了,这样它就可以公开使用了。
首先转到 setup.py 所在的路径,然后安装或更新 twin 包。
>pip install --upgrade twine
最后,通过 twin 将包发布到 PyPI,
>twine upload dist/* Enter your username: callraj.joshi Enter your password: Uploading distributions to https://upload.pypi.org/legacy/ Uploading firstPackage-0.0.1-py2.py3-none-any.whl …
上面我们只需要输入用户名和密码,然后它就会开始上传我们的包。