📜  Python中的源分发和内置分发

📅  最后修改于: 2022-05-13 01:55:15.348000             🧑  作者: Mango

Python中的源分发和内置分发

Python是关于分发的。它可以定义为允许构建、打包和分发模块的文件的集合。一旦系统中存在发行版,就可以轻松安装它。此外,它可以与 PyPI(Python包索引)社区共享,以便其他人可以使用您的发行版。
为了更清楚地说明,请考虑 Anaconda,它是Python和 R 编程语言的开源发行版。它包含Python、各种库(numpy、pandas、matplotlib tec)、IDE(如 Spyder、Jupyter Notebook)和包管理器 conda 以及其中的 pip,使用户无需下载即可将资源用于各种机器学习任务他们明确地。

Python中有两种分布:

  1. 源分布( sdist ) - 它包含setup.py (其中包含有关模块/元数据的信息)、模块/脚本的源文件( .py文件或.c/.cpp对于二进制模块)、数据文件等。结果是一个存档,可用于在任何平台(如 linux、windows 和 mac)上重新编译所有内容。
  2. 内置发行版( 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

不同的格式有:

FormatDescription
zipzip file (.zip)
gztargzip’ed tar file (.tar.gz)
bztarbzip2’ed tar file (.tar.bz2)
xztarxz’ed tar file (.tar.xz)
ztarcompressed tar file (.tar.Z)
tartar file (.tar)

制作一个内置的分布:

  • 重复源分布中的步骤 1。
  • 最后输入setup.py bdist 。这将创建一个内置的发行版。

执行以下命令后,将创建两个文件夹:

  1. dist – 包含 winRarZip 存档格式的“nester1-1.1.0.win-amd64”,解压 zip 文件后,会在 __pycache__ 文件夹中找到“addition.pyc”文件,这是编译后的(字节码)版本您的“addition.py”文件,特定于系统。
  2. build - 其中包含库文件夹和其中的“addition.py”文件。

在创建构建发行版时,可以使用--format选项指定许多格式。
例如:

python setup.py bdist --format=zip

不同的格式有:

FormatDescription
zipzip file (.zip)
gztarcompressed tar file (.tar.Z)
ztarbzip2’ed tar file (.tar.bz2)
tartar file (.tar)
rpmRPM
pkgtoolSolaris pkgtool
sduxSolaris pkgtool
wininstself-extracting ZIP file for Windows
msiMicrosoft Installer