【问题标题】:What if setuptools isn't installed?如果没有安装 setuptools 怎么办?
【发布时间】:2009-11-03 10:27:04
【问题描述】:

我正在学习为我的项目编写setup.py 文件的艺术。我看到有很多关于setuptools 的讨论,它应该优于distutils。虽然有一件事我不明白,而且我没有在我读过的任何教程中看到它:如果 setuptools 没有安装怎么办?我知道它不是标准库的一部分,所以你怎么能假设想要安装你的程序的人会安装它呢?

【问题讨论】:

  • 对于它的价值,有些人正在谈论从 setuptools 迁移到 [distribute][1]... [1]:pypi.python.org/pypi/distribute
  • ...似乎标记在 cmets 中的工作方式不同。 ;)
  • 没有灵丹妙药。为了使用 setuptools 安装您的应用程序,必须有人在不使用 easy_install 的情况下通过将 setuptools 导入系统来引导系统。这可能是用户,也可能是发行版人员,也可能是您,在内部使用 setuptools 构建安装程序,而不是您的应用程序。

标签: python deployment setuptools distutils


【解决方案1】:

使用 setuptools 分发软件包的标准方法包括一个 ez_setup.py 脚本,它会自动下载并安装 setuptools 本身 - 在 Windows 上,我相信它实际上会为 easy_install 安装一个可执行文件。您可以从标准的 setuptools/easy_install 发行版中获得它。

【讨论】:

    【解决方案2】:

    在我为 python 安装的大多数库中,都会出现警告“您必须安装 setuptools”。我认为你也可以这样做,你可以添加一个链接,这样用户就不必在互联网上搜索它了。

    【讨论】:

    • +1:在自述文件中包含“使用 setuptools”字样怎么样?
    • 我觉得差不多。当没有安装 setuptools 时无论如何都会引发异常,所以无论如何你都必须处理它。
    【解决方案3】:

    我使用 setuptools 编译了许多我已经写入 Windows EXE 的 python 脚本。但是,我一直认为(根据经验)运行已编译 EXE 的计算机不需要安装设置工具。

    希望有帮助

    【讨论】:

      【解决方案4】:

      您不能假设它已安装。有一些方法可以解决这个问题,您可以回退到 distutils(但是为什么首先要有 setuptools),或者您可以在 setup.py 中安装 setuptools(但我认为这是邪恶的)。

      仅在需要时使用设置工具。

      当涉及到 setuptools 与 distrubute 时,它​​们是兼容的,选择其中一个主要取决于用户。 setup.py 是一样的。

      【讨论】:

        【解决方案5】:

        我会说这取决于您所针对的用户类型。

        如果他们只是简单的用户而不是 Python 程序员,或者如果他们是基础程序员,一开始使用 setuptools 可能有点过分。对于那些人来说, distutils 是完美的。

        对于客户,我肯定会坚持使用 distutils。

        对于更多狂热的程序员来说,setuptools 会很好。

        不知何故,它还取决于您希望如何分发更新以及多久分发一次。例如,用户是否可以访问 Internet,而他们的公司没有设置会阻止 setuptools 的讨厌的代理? - 我们确实有一个,这是配置并使其在每个工作站上工作的额外步骤。

        【讨论】:

          【解决方案6】:

          您可以从这里下载 Windows EXE 安装程序和 Linux RPM

          http://pypi.python.org/pypi/setuptools

          然后,一旦您有了 setuptools,您就可以使用 easy_install 命令下载和安装新软件包。因为 easy_install 也会自动下载和安装依赖项,所以您可能需要在实际使用之前设置 virtualenv。这样您就可以决定是否要将一堆包安装到系统的默认 Python 安装中。

          是的,这意味着您的用户必须安装 setuptools 才能使用它。当然,您可以使用 setuptools 安装程序,重命名它们,然后使用 NSIS 将它们打包,然后分发给您的用户。事实上,你必须安装一些东西,所以如果你不想把你的应用程序放在安装程序中,你可以打包 setuptools 来代替。

          【讨论】:

          • 所以我对我的用户说,“要安装我的程序,你必须安装 setuptools”?
          • 问题不是“如何安装 setuptools”,而是“用户没有它怎么办”。
          • 如果用户没有它,你唯一能做的就是让他们下载EXE或RPM并安装它。或者分发 setuptools 而不是您的应用程序。编辑了答案来说明这一点。
          猜你喜欢
          • 2020-09-04
          • 1970-01-01
          • 2023-03-31
          • 2019-12-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-08
          • 1970-01-01
          相关资源
          最近更新 更多