2013-10-17 64 views
10

我正在编写一个快速shell脚本,以方便我们的一些开发人员运行Fabric。 (我也是Python新手。)安装Fabric的一部分是安装pip,安装pip的一部分是安装setuptools。如何判断是否安装了Python setuptools?

是否有任何简单的方法来检测setuptools是否已安装?我希望能够多次运行该脚本,并且可以跳过任何已经完成的脚本。就目前来看,如果你连续运行两次ez_setup.py,你将会第二次失败。

我想到的一个想法是在/ Scripts文件夹下查找easy_install脚本。我可以使用sys.executable来猜测Python根目录,然后切换可执行文件名称本身。但我正在寻找一些更优雅的东西(也许跨操作系统友好)。有什么建议么?

+1

尝试导入的easy_install,如果它抛出一个错误的方式,它被安装 - 这是不在那里:) –

回答

8

这不是很好,但它会工作。

一个简单的Python脚本可以做检查

import sys 
try: 
     import setuptools 
except ImportError: 
     sys.exit(1) 
else: 
     sys.exit(0) 

然后就检查它在调用脚本退出代码

2

您可以检查的easy_install并通过运行以下命令行setuptools的命令:

which easy_install 
#finds the path to easy_install if it exists 

less path/to/easy_install 
#where path/to/easy_install is the output from the above command 
#this outputs your easy_install script which will mention the version of setuptools 

如果安装了easy_install/setuptools软件包,则上面第二个命令的输出可能会显示如下内容:

#EASY-INSTALL-ENTRY-SCRIPT: 'setuptools==0.6c11','console_scripts','easy_install' 
16

试试这个命令。

$ pip list 

它同时返回pipsetuptools的版本。否则,与

$ pip install pil 

尝试如果这也不起作用,然后用

$ which easy_install 
+0

'pip list'工作吗?在我的系统中给它一个命令没有找到错误。还请查看编辑帮助中的Markdown语法,以查看可用于编辑的选项。 – Sithsu

+0

似乎我正在运行一个较老的点。 “点子列表”可用于点1.3。 http://stackoverflow.com/questions/6600878/find-all-packages-installed-with-easy-install-pip – Sithsu

+0

是的,它的工作原理。作为一个可安装的软件包,你可能想知道你的virtualenv中的setuptools版本。 – HugoFS

4

尽量只运行下面的代码进入IDLE:

import easy_install 

如果它只是下一个线,我认为它已安装。 如果它说:

Error: invalid syntax 

然后它可能没有安装。 我知道这个是因为我测试过它。 也只需检查import pip以查看是否预先安装了pip。 :)

0

它预装了新版本的Python。

pip3 list 

足以确定我

3

要测试是否安装任何模块,试试这个

>>> import sys 
>>> 'setuptools' in sys.modules.keys() 
False 
相关问题