【问题标题】:Python 2.6.1: Checking if imports existPython 2.6.1:检查导入是否存在
【发布时间】:2012-03-28 16:37:29
【问题描述】:

我用 Python 2.6.1 为我的一些同事的 Mac OSX 编写了一个实用程序脚本。由于他们没有安装所有必需的模块,我有一个 try-except 导入子句:

try:
    import argparse
except ImportError:
    print "argparse module missing: Please run 'sudo easy_install argparse'"
    sys.exit(1)

我很确定有更优雅的方法来处理这个问题。有什么想法吗?

【问题讨论】:

    标签: python macos python-module python-import


    【解决方案1】:

    你最好的办法是冻结你的python代码和所有需要的模块,并将它作为二进制文件分发;它适用于 Windows 和 Linux,但在 Linux 上,请确保您拥有兼容的 glibc 版本

    有一些 Mac OS X 的冻结工具,但我没有使用它们。我只使用了 Windows 和 Linux 工具。

    查看此链接了解更多信息

    http://hackerboss.com/how-to-distribute-commercial-python-applications/

    【讨论】:

      【解决方案2】:

      这是常见的用法,但您可以使用 setuptoolspip 来自动安装依赖项 (example)。

      【讨论】:

      • 最佳解决方案,因为它具有可扩展性,并且可以在缺少多个模块的情况下使用户生活更轻松
      • 默认情况下(在系统范围内安装软件包时)是的,但是您可以使用virtualenv 在您的主文件夹中创建一个完全隔离的 Python 环境并将软件包安装在那里。
      【解决方案3】:

      这实际上是最好的方法。例如,根据机器上安装的内容,使用相同的方法来选择不同的 json 库:

      try:
          import simplejson as json
      except ImportError:
          import json
      

      【讨论】:

      • 这样的事情只能在排他的情况下完成,不能像他的例子那样用于 argparse
      • 这只是为了提供这种语法的用例,以支持声称这是正确的做法。我知道它只适用于极少数例子
      猜你喜欢
      • 2016-11-05
      • 2020-02-23
      • 2012-12-12
      • 1970-01-01
      • 1970-01-01
      • 2013-09-19
      • 2015-10-19
      • 2013-12-25
      • 2013-05-22
      相关资源
      最近更新 更多