VS代码:相对进口(皮棉)

时间:2020-06-12 09:10:08

标签: python visual-studio-code python-import

我有一个多目录项目。我为每个目录使用绝对导入。例如,

main_dir
|
| - sub_dir1
      |
      | - a.py (has say class A)
| - sub_dir2
      |
      | - b.py (imports class A. Syntax:  from subdir1.a import A)

当我在终端上从main_dir运行它时,它运行正常。 但是,此导入为我提供了VS代码中的“未解决的导入'differential_diagnosis.src.algorithm'Python(unresolved-import)”。我不知道该如何解决。

因此,我面临的最大挑战是我无法使用peek功能查看A类的成员函数的作用。

我在GitHub Project上也提出了类似的要求。

2 个答案:

答案 0 :(得分:0)

您应该放置一些您想做的代码。我可以说的是,Python在导入搜索路径中查找模块。首先,它查找内置模块,Python查找sys.path变量,该变量由原始脚本的目录+ PATH shell变量+一些依赖于安装的默认值初始化。

请参阅:https://docs.python.org/3/tutorial/modules.html

为确保可以找到您的进口货,您可以执行以下操作:

sys.path.append(pathname_to_module)

在导入模块之前。

答案 1 :(得分:0)

尝试在您的python文件中添加以下代码:

import sys
print(sys.path)

解释器只能搜索这些路径以找到模块。 Python只会自动将包含当前python文件的文件夹添加到“ sys.path”。

'不应在'sys.path'中找到'sub_dir1'的路径。您需要将这些设置添加到launch.json文件中

"env": {
            "PYTHONPATH": "${workspaceFolder}"
        },

然后,您的工作空间路径将添加到“ sys.path”。如果“ main_dir”是工作空间文件夹,则可以将“从subdir1.a import A”更改为“ form main_dir.subdir1.a import A”。如果不是,则应将其从“ {workspaceName}。{folder} .... main_dir.subdir1 import A”更改为“ A”,并且应在每个文件夹中添加“ init .py”文件以进行更改文件夹到python包。