有关虚拟环境,PATH变量和命令行的问题

问题描述

如果我将python软件包全局安装到我的计算机上,然后将该软件包的位置添加到PATH变量中,那么我的命令行可以找到它,而无需每次执行时都输入完整路径。

这在虚拟环境中如何工作?例如,我只是在项目的激活虚拟环境中使用了pip install ffmpeg。我可以在venv/Lib/site-packages文件夹中看到它,但是我的命令行找不到它。我该如何在虚拟环境中将ffmpeg的位置添加到我的PATH变量中?

解决方法

正如chepner在上面的评论中提到的那样,如果您已经激活了虚拟环境,这应该已经起作用。您可以通过查看模块的__file__来说服自己或再次检查您要从哪个位置运行:

在激活虚拟环境之前:

>>> import pip
>>> print(pip.__file__)
C:\Users\...\Anaconda3\lib\site-packages\pip\__init__.py

激活虚拟环境后:

>>> import pip
>>> print(pip.__file__)
C:\Users\...\Documents\Research\...\env\lib\site-packages\pip\__init__.py                                                                                                                             

请注意,我没有调整PATH,并且pip正在虚拟环境中运行。

还要注意,__file__不一定为每个模块都定义。有关__file__对快速检查不起作用时的选项的完整视图,请参见this答案。