我只是在学习setup.py
为我的项目编写文件的艺术。我看到有很多关于 的讨论setuptools
,这应该优于 distutils。虽然有一件事我不明白,而且我没有在我读过的任何教程中看到它:如果 setuptools 没有安装怎么办?我知道它不是标准库的一部分,所以你怎么能假设想要安装你的程序的人会安装它呢?
6 回答
使用 setuptools 分发软件包的标准方法包括一个ez_setup.py
脚本,该脚本将自动下载并安装 setuptools - 在 Windows 上,我相信它实际上会为easy_install
. 你可以从标准的 setuptools/easy_install 发行版中得到它。
在我为 python 安装的大多数库中,都会出现警告“您必须安装 setuptools”。我认为您也可以这样做,您可以添加一个链接,这样用户就不必在互联网上搜索它。
我使用 setuptools 编译了许多我已经写入 Windows EXE 的 python 脚本。但是,我一直认为(根据经验)运行已编译 EXE 的计算机不需要安装设置工具。
希望有帮助
您不能假设它已安装。有很多方法可以解决这个问题,您可以退回到 distutils (但是为什么首先要有 setuptools )或者您可以在 setup.py 中安装 setuptools (但我认为这是邪恶的)。
仅在需要时使用 setuptools。
当涉及到 setuptools 与 distrubute 时,它们是兼容的,选择其中一个主要取决于用户。setup.py 是相同的。
我会说这取决于您所针对的用户类型。
如果他们只是用户而不是 Python 程序员,或者如果他们是基础程序员,那么一开始使用 setuptools 可能有点过分。对于那些 distutils 是完美的。
对于客户,我肯定会坚持使用 distutils。
对于更多的发烧友程序员来说,setuptools 会很好。
不知何故,它还取决于您希望如何分发更新以及多久分发一次。例如,用户是否可以访问 Internet,而他们的公司没有设置会阻止 setuptools 的讨厌的代理?- 我们确实有一个,这是配置并使其在每个工作站上工作的额外步骤。
您可以从此处下载 Windows EXE 安装程序和 Linux RPM
http://pypi.python.org/pypi/setuptools
然后,一旦你有了 setuptools,你就可以使用该easy_install
命令来下载和安装新的包。因为 easy_install 也会自动下载和安装依赖项,所以您可能需要在实际使用它之前设置virtualenv 。这样,您可以决定是否要将一堆包安装到系统的默认 Python 安装中。
是的,这意味着您的用户必须安装 setuptools 才能使用它。当然,您可以使用 setuptools 安装程序,重命名它们,然后像 NSIS一样将它们打包,然后分发给您的用户。事实是,你必须安装一些东西,所以如果你不想把你的应用程序放在安装程序中,你可以打包 setuptools 代替。