关于虚拟环境、PATH 变量和命令行的问题

Question about virtual environments, PATH variable and command line

如果我在我的计算机上全局安装一个 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 答案。