2015-07-21 22 views
0

是什麼命令的區別:和不同的安裝包的列表唱「點子名單」和「pip.get_installed_distributions()」

$ pip list 

,我可以在命令行中運行,:

import pip 
pip.get_installed_distributions() 

我在python環境中運行。

爲什麼他們返回已安裝軟件包的不同列表?

+0

它對我來說也是一樣。你確定你在運行'python'的同一個env中運行'pip list'嗎? – davidism

+0

你的$ PATH有什麼? –

+0

@davidism我打開一個終端並運行'pip list',我得到一個長列表。然後我在同一個終端會話中輸入一個'python'環境並使用'pip.get_installed_distributions()'命令,我得到一個更短的列表。 – Gabriel

回答

1

pip.get_installed_distributions()source code定義 -

def get_installed_distributions(local_only=True, 
           skip=stdlib_pkgs, 
           include_editables=True, 
           editables_only=False, 
           user_only=False): 

這是默認與local_only集運行作爲True,而當你做pip list,它會顯示所有的包本地和全局,這是在你的情況下可能發生的事情,並導致你看到更多的軟件包安裝(包括本地和全球)。

嘗試運行pip list --local只得到本地安裝的軟件包

pip.get_installed_distributions(local_only=False) 

獲得全球包爲好。

+0

這將返回幾乎與$ pip list相同的列表,只有包'pip'&'setuptools'沒有使用'pip.get_installed_distributions(local_only = False)'列出。任何想法爲什麼? (無論如何我都接受這個答案,這只是一個額外的問題) – Gabriel

+0

它確實列出了我,如果你想你可以嘗試在空列表中傳遞'skip'參數,以檢查它是什麼造成它。 –

+0

添加'skip = []'工作,列出了兩個軟件包(除了'Python')。謝謝! – Gabriel

相關問題