将Distutils用于纯模块的重点是什么?

时间:2014-11-04 15:20:05

标签: python distutils

我是Python的新手,在理解Distutils在安装和使用纯Python包和模块时扮演的角色时遇到了一些麻烦。我最近为其API下载了Kaltura的Python客户端,它带有标准的Distutils安装脚本。它还附带了包含各种模块本身的源Python脚本。我使用install命令运行Distutils安装脚本,并且提供的测试代码似乎可以正常工作,但是我无法正常加载客户端并在其他环境中工作。

我对Distutils适合这里的地方感到困惑。我已经有了模块,它们是我下载的档案的一部分。我甚至需要运行Distutils安装/安装吗?我不能直接导入模块吗?运行安装的重点是什么?

不确定这是否有帮助,但这是安装脚本:

from distutils.core import setup

setup(
    name='KalturaClient',
    version='1.0.0',
    url='http://www.kaltura.com/api_v3/testme/client-libs.php',
    packages=['KalturaClient', 'KalturaClient.Plugins'],
    license='AGPL',
    description='A Python module for accessing the Kaltura API.',
    long_description=open('README.txt').read(),
)

1 个答案:

答案 0 :(得分:2)

我认为distutils setup.py基本上是为了方便将事物移动到正确的目录。

install命令将所有模块移动到用户范围(或系统范围内,如果以root身份运行)可访问且已知的位置,这样您就不必关心实际路径,导入模块时。对于简单的设置,这不是绝对必要的。但是如果你的设置变得更复杂,那就很高兴。一些例子:

  • 您有多个模块经常在多个地方使用。如果没有设置,您必须始终手动将它们复制到项目特定目录或全局可访问目录

  • 您有不同版本的模块用于不同的项目。您创建了virtualenv并使用setup.py安装到该virtualenv中。

当手动执行此操作时,这是一项容易出错的工作,您必须正确地记住所有路径并记住正确。有了distutils,没有麻烦。

对于纯python模块来说,手动操作并不是一件非常重要的事情。这当然会改变更复杂的模块,绑定到C代码等。

如果您熟悉Linux发行版,则可以将其视为与发行版的包管理工具(dpkg,rpm等)等效。

此外,pip和PyPI模块存储库使用setup.py自动下载和安装Python包。