2012-03-12 83 views
3

我已经为Python 2.6.1的一些同事的Mac OSX编写了一个实用程序脚本。由于他们没有安装所有需要的模块呢,我有一个尝试 - 除了进口条款:Python 2.6.1:检查导入是否存在

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

我敢肯定有更优雅的方式来处理这个问题。有任何想法吗?

回答

7

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

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

退房此链接了解更多信息

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

1

这实际上是最好的方法。同样的方法也用于例如根据什么安装在机器上选择不同的JSON库:

try: 
    import simplejson as json 
except ImportError: 
    import json 
+0

这样的事情可以做只为独占的情况下,不argparse像他的例子 – 2012-03-12 09:29:39

+0

这只是给这样的语法的使用情况,以支持这种做法的正确方法。我知道它只适用于很少的例子 – StefanoP 2012-03-12 09:33:07

4

这是常见的成语,但你可以使用setuptoolspip自动依赖安装(example)。

+0

最好的解决方案,因为它是可扩展的,并且可以让用户在多个模块丢失的情况下更轻松 – 2012-03-12 09:30:55

+0

它仍然需要root权限,对吗? – 2012-03-12 09:55:09

+0

默认情况下(当系统安装包时)yes,但是您可以使用[virtualenv](http://www.virtualenv.org/)在您的home文件夹中创建一个完全隔离的Python环境,并在其中安装包。 – 2012-03-12 09:59:54