如何在特定的虚拟环境中制作已安装软件包的列表?

18 浏览
0 Comments

如何在特定的虚拟环境中制作已安装软件包的列表?

您可以cd YOUR_ENV/lib/pythonxx/site-packages/ 查看,但这有什么方便的方法吗?

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

admin 更改状态以发布 2023年5月20日
0
0 Comments

在虚拟环境内调用pip命令应该列出可见/可用的软件包。确保使用最近版本的virtualenv,默认使用选项--no-site-packages。这样使用virtualenv的目的是创建一个没有访问系统Python中安装的软件包的Python环境。

接下来,请确保使用虚拟环境提供的pip命令(YOUR_ENV/bin/pip)。或者只需激活虚拟环境(source YOUR_ENV/bin/activate),这是一个方便的方法来调用适当命令的Python解释器或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

我的答案中奇怪的地方是虚拟环境内可见包'wsgiref',它来自我系统中的Python。目前我不知道为什么,但也许在您的系统上有所不同。

0
0 Comments

您可以使用pip freeze --localpip list --local命令在virtualenv中只列出包列表。无论您是否在virtualenv中可见全局站点包,此选项都有效。

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

感谢@gvalkov的评论。还可参见pip问题85

0