【发布时间】:2020-03-05 14:28:19
【问题描述】:
我正在使用 Python 3.7 并使用 VS Code 作为我的 IDE。我安装了 Microsoft Python 扩展,并启用了 pylint 进行 linting 和 pytest 进行单元测试,将它们安装到系统 python37 脚本文件夹中,没有任何虚拟环境存在或处于活动状态。
此时,一切似乎都在工作。我的 Python37/Scripts 路径位于 Windows 系统 PATH 上,并且 pytest 和 pylint 主要脚本/exe 都存在于那里。 VS Code 可以找到并运行我的测试,并且 lints 很好。
现在,我为我正在处理的包安装一个虚拟环境,并将 Python 解释器更改为虚拟环境,名为 .venv。
之后,我安装了我所有的包依赖项,一切似乎都在工作,但是 VS Code 弹出窗口告诉我 pylint 和 pytest 没有安装。
如果我单击yes 进行安装,它似乎会使用当前默认的python 可执行文件安装它们(在这种情况下,我的.venv 虚拟环境中的python 3.7),但使用--user 选项来安装它到用户Python\Python37\Scripts 文件夹(在\users\user\appdata\roaming 文件夹中),即使它已经存在于我的系统python37\Scripts 文件夹中,也就是在路径上(安装时未激活虚拟环境)。
但即使在让扩展程序按照它想要的方式安装它们之后,我仍然无法自动发现我的测试,当我尝试配置测试时,它再次尝试安装到用户目录。
--
所以,我想这一切都是要问的 - 这是 VS Code 的缺陷吗?
有什么方法可以将我想使用的标准 Python 工具安装在 VS Code 总能找到的永久位置,还是我必须将每个工具(例如 pylint 和 pytest)重新安装到我的每个虚拟环境中设置?
如果我手动将这些包安装到虚拟环境中,看起来一切正常。将它们(以及我计划在全球范围内使用的所有其他工具)安装到每个虚拟环境中是唯一的选择吗?
【问题讨论】:
-
Python 扩展使用通过
-m执行的工具,因此它将使用您的项目所依赖的特定版本。所以这是设计使然,而不是缺陷。正如您所发现的,如果您特别想使用安装到不同位置的工具,我们会为路径提供覆盖。实际上,我们曾经根据PATH来做这件事,人们一直要求它保持现在的样子(另外,更喜欢全局安装的工具还有其他复杂性)。 -
@BrettCannon 感谢您提供的信息!感谢您的时间分享它,并希望它在这种情况下对其他人有所帮助。我只需要制定一个利用这一点的设置。例如,可以使用包含我所有“标准”python 包的需求文件来轻松地将它们安装到任何新的虚拟环境中......
-
最简单的方法是用你的产品定义你的
requirements.txt,然后有一个dev-requirements.txt文件,它的第一行是-r requirements.txt,其余的是你的开发要求。 -
如果未安装 PyTest 和 PyLint 等软件包,当它尝试在弹出窗口中自动安装时,我继续遇到与 VS Code 添加
--user选项相同的问题。 VS Code(或 Python 扩展)应该安装到当前环境中(特别是如果为当前解释器选择了 venv!)。这只是他们从系统切换到用户安装作为范例时留下的过度热情,我认为...... :) -
如果您选择了一个作为活动环境/解释器,Pip 将使用扩展程序使用的命令安装到您的虚拟环境中。
标签: python visual-studio-code pytest pylint