使用VS Code Python扩展-如何将python模块安装到虚拟环境之外的永久位置? 为每个虚拟环境安装开发工具的解决方案

我正在使用Python 3.7并使用VS Code作为我的IDE。我已经安装了microsoft Python扩展程序,并启用了pylint的linting和pytest的单元测试,并将它们安装到系统python37脚本文件夹中,而没有任何虚拟环境存在或处于活动状态。

在这一点上,一切似乎都在进行。我的Python37/Scripts路径在Windows系统PATH上,并且在那里存在pytest和pylint主脚本/ exe。 VS Code可以找到并运行我的测试,并且不会掉毛。

现在,我为正在处理的软件包安装了一个虚拟环境,并将Python解释器更改为名为.venv的虚拟环境。

这样做之后,我安装了我所有的软件包依赖项,并且似乎一切正常,但是VS Code弹出了一个窗口,告诉我没有安装pylint和pytest。

如果我单击yes进行安装,则似乎使用当前的默认python可执行文件(在这种情况下,是我的.venv虚拟环境中的python 3.7)进行安装,但使用了{{1 }}选项将其安装到用户--user文件夹(在Python\Python37\Scripts文件夹中),即使它已经存在于我的系统\users\user\appdata\roaming文件夹中,也位于路径上(没有安装虚拟环境已激活)。

但是,即使扩展名按照所需的方式安装了它们,我仍然无法自动发现我的测试,并且当我尝试配置测试时,它会尝试再次安装到用户目录中。

-

所以,我想问的所有这一切-这是VS Code中的缺陷吗?

是否可以在永久的位置上安装我想使用的标准Python工具,而VS Code总是可以找到它,还是必须将每个工具(例如pylint和pytest)重新安装到每个虚拟环境中?设置?

如果我手动将这些软件包安装到虚拟环境,则看起来一切正常。是将它们(以及我计划在全球范围内使用的所有其他工具)安装到每个虚拟环境中的唯一选择吗?

gzdvd 回答:使用VS Code Python扩展-如何将python模块安装到虚拟环境之外的永久位置? 为每个虚拟环境安装开发工具的解决方案

解决方案(但请重新考虑以这种方式-见下文)

我确实找到了pylint的解决方案,(虽然有点麻烦)。

在全局VS Code设置中,对于 PyLint ,搜索pylintpath的VS Code设置,然后找到下面列出的项目,并用用户或pylint的系统安装。在Windows中,它必须采用以下格式,每个路径分隔符都带有双反斜杠:

enter image description here

请注意,您还可以通过在“设置”中选择相应的标签,为给定的工作区或文件夹输入pylint的绝对路径。

pytest有一个类似的设置,其工作方式似乎相同。我发现pytest发现并运行了一些“小故障”(它似乎两次运行了每个测试),但是它确实起作用了。


Brett的评论-重新考虑此策略

根据Brett Cannon的评论,我将切换到仅在每个虚拟环境中安装我的开发包。这似乎是长期开发人员的最佳做法。

当我考虑到我可能更喜欢的标准工具可能因软件包而异时,这是有道理的,例如使用不同的单元测试框架的公共项目或不同的linters-因为该项目上的所有开发人员都需要使用相同的工具避免工具冲突(例如,考虑简单的差异,例如间距或压痕的工作方式,不同的短绒以不同的方式抱怨)。

为每个虚拟环境安装开发工具的解决方案

一个解决方案是创建一个requirements-dev.txt文件,其中包含您使用的所有开发工具包,可以使用python -m pip install -r requirements-dev.txt安装该文件。

这提供了一种方法来单独列出某人从事该项目所需的开发工具,该列表是可分发的,但与标准用户安装要求分开。

他还建议您可以菊花链方式安装需求文件。例如,requirements-dev.txt的第一行可以是-r requirements.txt,它将安装正常需求文件中的所有内容,然后安装所有在第一行之后的其余开发需求。这将使用单个命令安装normal和dev依赖项。

本文链接:https://www.f2er.com/3134476.html

大家都在问