如何在特定的虚拟环境中制作已安装软件包的列表?
如何在特定的虚拟环境中制作已安装软件包的列表?
您可以cd
到 YOUR_ENV/lib/pythonxx/site-packages/
查看,但这有什么方便的方法吗?
pip freeze
列出所有安装的包,包括系统环境的。
admin 更改状态以发布 2023年5月20日
在虚拟环境内调用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。目前我不知道为什么,但也许在您的系统上有所不同。
您可以使用pip freeze --local
或pip list --local
命令在virtualenv
中只列出包列表。无论您是否在virtualenv
中可见全局站点包,此选项都有效。
请注意,限制virtualenv
不使用全局站点包并不是解决问题的答案,因为问题在于如何将这两个列表分开,而不是如何使我们的工作流程适应工具的限制。