2013-10-17 61 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 
相關問題