Python中的源分发和内置分发
Python是关于分发的。它可以定义为允许构建、打包和分发模块的文件的集合。一旦系统中存在发行版,就可以轻松安装它。此外,它可以与 PyPI(Python包索引)社区共享,以便其他人可以使用您的发行版。
为了更清楚地说明,请考虑 Anaconda,它是Python和 R 编程语言的开源发行版。它包含Python、各种库(numpy、pandas、matplotlib tec)、IDE(如 Spyder、Jupyter Notebook)和包管理器 conda 以及其中的 pip,使用户无需下载即可将资源用于各种机器学习任务他们明确地。
Python中有两种分布:
- 源分布(
sdist
) - 它包含setup.py
(其中包含有关模块/元数据的信息)、模块/脚本的源文件(.py
文件或.c/.cpp
对于二进制模块)、数据文件等。结果是一个存档,可用于在任何平台(如 linux、windows 和 mac)上重新编译所有内容。 - 内置发行版(
bdist
) - 它创建发行版,其中包括.pyc
文件(Python字节码)、用于二进制模块的.so/.dll/.dylib
、如果使用 py2exe( Python的扩展名,可用于将脚本转换为 exe)的.exe
Windows 上的表单,无需安装Python即可在 Windows 上使用),数据文件......但没有setup.py
。结果是特定于平台(例如 linux-x86_64)和Python版本的存档。可以通过将其解压缩到文件系统的根目录中来安装然后直接使用它(可执行文件在 /usr/bin(或等效文件)中,数据文件在 /usr/share 中,模块在 /usr/lib/pythonX.X/site -包/…)。
安装程序.py
setup.py
是一个Python文件,它通常告诉系统你要安装的模块/包已经使用 Distutils 打包分发,这是Python模块分发的标准。这是最重要的文件。它是配置项目各个方面的文件。 setup.py 的主要特点是它包含一个全局setup()
函数。此函数的关键字参数是如何定义项目的具体细节。
制作一个基本的 setup.py 文件。
# import setup function from
# python distribution utilities
from distutils.core import setup
# Calling the setup function
setup(
name = 'nesters',
version = '1.0.0',
py_modules = ['addition'],
author ='a geek',
author_email = 'ageek@gmail.com',
url = 'https;//ageek.com',
description = 'a simple program to add two numbers',
keywords='adds two numbers',
)
让我们看看 setup函数的不同参数有什么作用:
- name:项目名称。包将在 PyPI 上按此名称列出。
- version:是一个字符串,可以指定项目的当前版本。如何设置系列版本的方案完全由您选择(也可以使用“1.0”或“0.1”甚至“0.0.1”)。如果项目已发布,则此版本会显示在每个版本的 PyPI 上。每次上传新版本时,您也必须更改此参数。
- 描述:关于包的简短描述。长描述参数可用于长描述。
- url:项目的主页 URL。这使人们更容易关注或为项目做出贡献。
- author, author_email:关于作者的详细信息。
- 许可证:指定使用的许可证类型。
- 分类器:它是一个字符串列表,可以指定有关项目的更多详细信息,例如项目的开发状态、主题、许可证和支持的Python版本。
- install_requires:它可以用来指定你的包需要运行哪些第三方库。当有人安装您的包时,这些依赖项将由 pip 安装。
- 关键字:列出描述项目的关键字。
让我们创建一个addition.py 文件,其中包含两个数字相加的代码。在记事本中创建此文件并将其保存为addition.py。
def addition():
n = 5
print("addition of two numbers")
while(n>= 0):
a, b = input("enter two numbers: ").split()
try:
value1 = int(a)
value2 = int(b)
break
except e:
print("re enter numbers" )
sum = value1 + value2
print("sum of two numbers is :", sum)
进行源分发:
- 要进行源代码分发,首先创建一个文件夹并将 setup.py 和 addition.py 脚本复制到该文件夹中(我们将其命名为 nester)。然后打开终端,将当前目录更改为文件夹所在目录,例如:如果是在桌面-C:\Users\HP PC\Desktop\nester。
- 最后键入
setup.py sdist.
这将进行源代码分发。
执行以下命令后,将形成一个 dist 文件夹,其中包含一个 nester1-1.1.0.tar 文件和一个包含由 sdist 命令构建的Python(.py) 文件列表的清单文件,将在相同的源文件夹(nester)。
在创建源分发时,可以使用--format
选项指定许多格式。
例如:
python setup.py sdist --formats=gztar,zip
不同的格式有:
Format | Description |
---|---|
zip | zip file (.zip) |
gztar | gzip’ed tar file (.tar.gz) |
bztar | bzip2’ed tar file (.tar.bz2) |
xztar | xz’ed tar file (.tar.xz) |
ztar | compressed tar file (.tar.Z) |
tar | tar file (.tar) |
制作一个内置的分布:
- 重复源分布中的步骤 1。
- 最后输入
setup.py bdist
。这将创建一个内置的发行版。
执行以下命令后,将创建两个文件夹:
- dist – 包含 winRarZip 存档格式的“nester1-1.1.0.win-amd64”,解压 zip 文件后,会在 __pycache__ 文件夹中找到“addition.pyc”文件,这是编译后的(字节码)版本您的“addition.py”文件,特定于系统。
- build - 其中包含库文件夹和其中的“addition.py”文件。
在创建构建发行版时,可以使用--format
选项指定许多格式。
例如:
python setup.py bdist --format=zip
不同的格式有:
Format | Description |
---|---|
zip | zip file (.zip) |
gztar | compressed tar file (.tar.Z) |
ztar | bzip2’ed tar file (.tar.bz2) |
tar | tar file (.tar) |
rpm | RPM |
pkgtool | Solaris pkgtool |
sdux | Solaris pkgtool |
wininst | self-extracting ZIP file for Windows |
msi | Microsoft Installer |