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

hol*_*lys 59 pip virtualenv

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

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

Ioa*_*dis 52

您只能在virtualenvby pip freeze --local 或中 列出包pip list --local.无论您是否在可见的全局站点包中都可以使用此选项virtualenv.

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

致@gvalkov 在这里发表评论.参看 还有这个问题.


Sas*_*ied 24

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

接下来,确保使用pipvirtualenv(YOUR_ENV/bin/pip)中提供的命令.或者只是激活virtualenv(source YOUR_ENV/bin/activate)作为调用python interpreter或pip的正确命令的便捷方式

~/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
Run Code Online (Sandbox Code Playgroud)

我的答案有些奇怪,在virtualenv中可以看到包'wsgiref'.它来自我的系统python.目前我不知道为什么,但也许你的系统有所不同.

  • 这实际上并没有回答这个问题,即:给定一个带有site-packages的virtualenv,我们如何只过滤virtualenv中安装的那些. (3认同)

err*_*hpd 12

列出virtualenv中已安装的软件包

步骤1:

workon envname

第2步:

pip冻结

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


Pun*_*rud 9

在 Python3 中

pip list
Run Code Online (Sandbox Code Playgroud)

空 venv 是

Package    Version
---------- ------- 
pip        19.2.3 
setuptools 41.2.0
Run Code Online (Sandbox Code Playgroud)

创建一个新环境

python3 -m venv your_foldername_here
Run Code Online (Sandbox Code Playgroud)

启用

cd your_foldername_here
source bin/activate
Run Code Online (Sandbox Code Playgroud)

停用

deactivate
Run Code Online (Sandbox Code Playgroud)

您也可以站在文件夹中,为虚拟环境指定一个名称/文件夹(python3 -m venv name_of_venv)。

Venv 是 Python 3.3 之后随附的 virtualenv 的子集。


nea*_*mcb 5

如果您仍然对此感到困惑,则virtualenv可能无法选择如何结合Ioannis和Sascha的答案中的出色技巧。即,这是您需要的基本命令:

/YOUR_ENV/bin/pip freeze --local
Run Code Online (Sandbox Code Playgroud)

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

cd ${WORKON_HOME:-~/.virtualenvs}
for dir in *; do [ -d $dir ] && $dir/bin/pip freeze --local >  /tmp/$dir.fl; done
more /tmp/*.fl
Run Code Online (Sandbox Code Playgroud)


小智 5

你为什么不试试pip list

记住我在 python 版本 3.7.3 上使用 pip 版本 19.1