如何在Visual Studio代码中正确设置python源根目录?

rhfm7lfc  于 2022-11-08  发布在  PyCharm
关注(0)|答案(4)|浏览(265)

我尝试在Visual Studio Code中建立一个python项目。我的问题是创建并使用src目录作为源根目录(就像在pycharm中一样)。我有以下目录结构:

project_name\
  src\
    __init__.py
    dta\
      __init__.py
      dtapy.py
    tests\
      __init__.py
      tet.py

我的问题发生在以下代码中:

import dta.dtapy
print('ok')

我得到的消息是:
文件“.../项目名称/scr/tests/tet.py“,第1行,在导入数据中。dtapy模块未找到错误:没有名为“dta”的模块
我尝试了几个技巧,如:

  • 添加.env文件:PYTHONPATH=src到根目录
  • 设置launch.json,其中:"cwd": "${workspaceFolder}/src",

在VS代码中正确设置此功能的正确方法是什么?

hc2pp10m

hc2pp10m1#

在VSCode中设置源文件夹需要一些工作。您需要为编辑器的Python环境和集成终端配置PYTHONPATH,而不是通过PyCharm UI添加源文件夹。您需要配置两次,因为不是所有的扩展都使用编辑器的Python环境来运行它们的命令。
编辑器的Python环境由Python环境变量文件配置。默认情况下,该文件位于workspaceFolder/.env

PYTHONPATH=./src

集成终端由工作区设置文件配置:.vscode/设置.json

{
  "terminal.integrated.env.osx": {
    "PYTHONPATH": "${workspaceFolder}/src",
  },
  "terminal.integrated.env.linux": {
    "PYTHONPATH": "${workspaceFolder}/src",
  },
  "terminal.integrated.env.windows": {
    "PYTHONPATH": "${workspaceFolder}/src",
  }
}

更多信息:

9lowa7mx

9lowa7mx2#

我没有使用任何__init__.py文件,您的项目在Visual Studio代码中使用此project_name\.vscode\launch.json可以正常工作:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "env": {
                "PYTHONPATH": "${workspaceFolder}/src"
            }
        }
    ]
}

请注意添加了PYTHONPATH环境变量。

'PYTHONPATH': 'C:\\Users\\Cees\\PycharmProjects\\testimport;C:\\Users\\Cees\\PycharmProjects\\testimport\\src;C:\\Program '
               'Files\\JetBrains\\PyCharm '
               '2020.2.3\\plugins\\python\\helpers\\pycharm_matplotlib_backend;C:\\Program '
               'Files\\JetBrains\\PyCharm '
               '2020.2.3\\plugins\\python\\helpers\\pycharm_display',

根据pprint(dict(os.environ))

8ulbf1ek

8ulbf1ek3#

使用一个.env文件,带有相对路径,改变你当前的工作可能会让事情变得混乱。我会使用.env文件。同时删除src/__init__.py文件,因为它是不必要的。最后,我会把你的tests/目录从src/上移出来,这样它就在它旁边,否则它应该在dta/下,然后使用相对导入。

p5fdfcr1

p5fdfcr14#

不算是答案,但还是...
将该目录命名为project_name,而不是src
与该目录中的__init__.py一起,创建__main__.py文件,其中包含main函数:

def main():
    # call your app from here

if __name__ == "__main__":
    main()

这样,您就可以从项目的根目录(第一个project_name)启动应用:

$ python -m project_name

VS代码的launch.json配置(单击Debug部分中的齿轮图标)应该如下所示:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Module",
            "type": "python",
            "request": "launch",
            "module": "project_name",
            "console": "integratedTerminal"
        }
    ]
}

相关问题