我是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(),
)
答案 0 :(得分:2)
我认为distutils setup.py
基本上是为了方便将事物移动到正确的目录。
install
命令将所有模块移动到用户范围(或系统范围内,如果以root身份运行)可访问且已知的位置,这样您就不必关心实际路径,导入模块时。对于简单的设置,这不是绝对必要的。但是如果你的设置变得更复杂,那就很高兴。一些例子:
您有多个模块经常在多个地方使用。如果没有设置,您必须始终手动将它们复制到项目特定目录或全局可访问目录
您有不同版本的模块用于不同的项目。您创建了virtualenv
并使用setup.py
安装到该virtualenv中。
当手动执行此操作时,这是一项容易出错的工作,您必须正确地记住所有路径并记住正确。有了distutils,没有麻烦。
对于纯python模块来说,手动操作并不是一件非常重要的事情。这当然会改变更复杂的模块,绑定到C代码等。
如果您熟悉Linux发行版,则可以将其视为与发行版的包管理工具(dpkg,rpm等)等效。
此外,pip和PyPI模块存储库使用setup.py自动下载和安装Python包。