打包和发布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 command

touch __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="[email protected]",
   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
This is a sample package to learn the steps of creating and publishing package.

实际的打包步骤

在环境中安装或更新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
Using base prefix 'c:\python\python361'
New python executable in c:\Users\rajesh\myPackage\Scripts\python.exe
Installing setuptools, pip, wheel...done.

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
…

上面我们只需要输入用户名和密码,然后它就开始上传我们的包了。

更新于:2019年7月30日

190次浏览

开启你的职业生涯

通过完成课程获得认证

开始学习
广告