关于pip:如何在某个virtualenv中列出已安装的软件包?

How can I make a list of installed packages in a certain virtualenv?

你可以从cdYOUR_ENV/lib/pythonxx/site-packages/去看看,但是有什么方便的方法吗?

pip freeze列出所有安装的软件包,包括系统环境。


您只能按列出virtualenv中的包pip freeze --localpip list --local。无论您是否有在virtualenv中可见的全局站点包,此选项都有效。

请注意,限制virtualenv不使用全局站点包并不是问题的答案,因为问题在于如何分离这两个列表,而不是如何限制我们的工作流以适应工具的限制。

感谢@gvalkov的评论。另见本期。


在virtualenv中调用pip命令应该列出在隔离环境中可见/可用的包。确保使用最新版本的virtualenv,默认情况下使用选项--no-site-packages。这样,使用virtualenv的目的就是创建一个没有访问系统python中安装的包的python环境。

接下来,确保使用virtualenv(YOUR_ENV/bin/pip中提供的pip命令。或者激活virtualenv(源代码YOUR_ENV/bin/activate)作为调用python解释器或pip的正确命令的方便方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
~/Projects$ virtualenv --version
1.9.1

~/Projects$ virtualenv -p /usr/bin/python2.7 demoenv2.7
Running virtualenv with interpreter /usr/bin/python2.7
New python executable in demoenv2.7/bin/python2.7
Also creating executable in demoenv2.7/bin/python
Installing setuptools............................done.
Installing pip...............done.

~/Projects$ cd demoenv2.7/
~/Projects/demoenv2.7$ bin/pip freeze
wsgiref==0.1.2

~/Projects/demoenv2.7$ bin/pip install commandlineapp
Downloading/unpacking commandlineapp
Downloading CommandLineApp-3.0.7.tar.gz (142kB): 142kB downloaded
Running setup.py egg_info for package commandlineapp
Installing collected packages: commandlineapp
Running setup.py install for commandlineapp
Successfully installed commandlineapp
Cleaning up...

~/Projects/demoenv2.7$ bin/pip freeze
CommandLineApp==3.0.7
wsgiref==0.1.2

奇怪的是,包"wsgiref"在virtualenv中是可见的。它来自我的系统python。目前我不知道为什么,但也许你的系统不同。


列出virtualenv中安装的软件包

步骤1:

workon envname

步骤2:

pip freeze

它将显示所有已安装的软件包、已安装的软件包和版本。


如果你仍然对virtualenv有点困惑,你可能不会从ioannis和sascha的答案中学习到如何结合伟大的技巧。也就是说,这是您需要的基本命令:

1
/YOUR_ENV/bin/pip freeze --local

其他地方很容易使用。例如,这里有一个方便而完整的答案,适合在通过virtualenvwrapper设置的所有环境中安装所有本地软件包:

1
2
3
cd ${WORKON_HOME:-~/.virtualenvs}
for dir in *; do [ -d $dir ] && $dir/bin/pip freeze --local >  /tmp/$dir.fl; done
more /tmp/*.fl


在我的情况下,瓶子的版本只能在下面看到,所以我必须去C:users\appdatalocalflaskvenvscripts>pip freeze--本地