VS Code -如何在Python项目中添加文件夹到搜索路径?



我最近从Spyder切换到VS Code来编写我的Python项目。Spyder对我来说很棒,因为它使用了ippython,也就是说,它基于REPL(交互环境),但它仍然缺乏一些有用的代码重构功能。反过来,VS Code是一流的,因为它提供了一个更复杂的编辑器,但很难正确配置。在我当前的项目中,我有这样的文件夹结构:

SysID
|--src
|--app
|--core
|--utils
|-- config.py

我的项目(即我的工作空间)的根目录是SysID文件夹,我所有的可运行脚本都存储在app文件夹中。我使用的自定义函数存储在core和utils文件夹中,因此我不能直接导入它们。在Spyder中,我有一个脚本(configure.py)来设置环境,如下所示:

# config.py 
# This script configures your environment to run all files in this project
import sys, os  
sys.path.append(os.path.join(os.path.dirname(os.getcwd()),'src','core'))
sys.path.append(os.path.join(os.path.dirname(os.getcwd()),'src','utils'))

每次我打开项目时,我都必须先运行那个脚本。这个解决方案似乎有点尴尬,但它工作良好-在Spyder。但在VS Code中,它是无用的,因为每次运行脚本时它都会打开一个新的Python会话。通过在互联网上到处研究(包括Stackoverflow),我尝试了这个:

(1)在发射时增加了一个CWD键。Json文件如下:

{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": true,
"cwd": "${workspaceFolder}"
},        
] }

(2)将以下行添加到设置中。Json文件如下:

"terminal.integrated.env.windows": {
"PYTHONPATH": "${env:PYTHONPATH};
${workspaceFolder}/src/core;
${workspaceFolder}/src/utils"}

(3)在项目的根文件夹中创建一个.env文件,文本如下:

PYTHONPATH=${PYTHONPATH};./src/core # Use path separator ';' on Windows.

什么都没起作用。那么,朋友们,我要怎么做才能根据需要设置项目的搜索路径呢?我使用Anaconda来运行Spyder和VS Code。

我解决了这个问题,并将答案贴在这里,因为它可能会帮助另一个试图解决类似问题的可怜的家伙。

答案原来很简单。我在SysID文件夹下创建了一个名为config的powershell脚本。ps1:

# config.ps1  
$env:PYTHONPATH="$env:PYTHONPATH;$pwdsrccore" 
$env:PYTHONPATH="$env:PYTHONPATH;$pwdsrcutils" 
echo "Your PYTHONPATH variable has been set." 
echo "Its current value is $env:PYTHONPATH"

我需要做的就是在VSCODE用于Python会话的同一终端中运行这个脚本。如果有人复位或杀死终端,则必须再次调用它。

另外,为了防止语法检查功能告诉我导入无效,我在设置中添加了这些行。json文件:

"python.analysis.extraPaths": [
"./src/core",
"./src/utils",
"./src/app",
"./"
]

我在问题中描述的所有行动都是完全无用的。所要做的就是通过调用config来设置PYTHONPATH环境变量。ps1脚本。