2015-07-21 19 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

相关问题