Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python VSCode中的绝对导入失败_Python_Visual Studio Code_Python Import - Fatal编程技术网

Python VSCode中的绝对导入失败

Python VSCode中的绝对导入失败,python,visual-studio-code,python-import,Python,Visual Studio Code,Python Import,因此,我有一个项目的结构如下: Folder folderA folderB folderC folderD Project ├ Source │ └ main.py └ Module └ __init__.py Project └ Root ├ Source │ └ main.py └ Module └ __init__.py folderD具有我的项目启动“位置”,在该项目中,我添加folderA/B/C作为我的结构/依赖

因此,我有一个项目的结构如下:

Folder
   folderA
   folderB
   folderC
   folderD
Project
├ Source
│  └ main.py
└ Module
   └ __init__.py
Project
└ Root
   ├ Source
   │  └ main.py
   └ Module
      └ __init__.py
folderD
具有我的项目启动“位置”,在该项目中,我添加folderA/B/C作为我的结构/依赖项。 现在我可以导入folderA.someModule了。现在这是伟大的魅力。。。但是如果我想使用VS代码,那么这个项目就不再有效了。因为PyCharm在“运行时”创建这些环境


有谁会这么好心,让我知道我如何在VScode中做到这一点?或者我应该向我的
sys.path
中添加哪些环境变量才能使其工作?我迷路了。将一些路径添加到
sys.path
会有所帮助,但一些导入仍然不起作用。

除此之外,Pycharm还为嵌套文件夹做了奇怪的工作

假设我们有
main.py
,如下所示:

试试看:
导入模块
打印(“直接导入”)
除恐怖外:
从os.path导入abspath,dirname
从系统导入路径
append(dirname(abspath(_文件__))+“/…)
导入模块
打印(“相对导入”)
从操作系统导入getcwd
打印(f“当前脚本目录:{{{{{}”)
打印(f“模块目录:{Module.\uuuuu文件\uuuuu}”)
打印(f“工作目录:{getcwd()}”)
Module.\uuuu init\uuuu
不包含任何内容

对于以下结构:

Folder
   folderA
   folderB
   folderC
   folderD
Project
├ Source
│  └ main.py
└ Module
   └ __init__.py
Project
└ Root
   ├ Source
   │  └ main.py
   └ Module
      └ __init__.py
执行
main.py
会直接导入

直接导入
当前脚本目录:Z:/github/PersonalToolkit/Source/main.py
模块目录:Z:\github\PersonalToolkit\Module\\uuuu init\uuuuu.py
工作目录:Z:\github\PersonalToolkit\Source
但是,对于以下结构:

Folder
   folderA
   folderB
   folderC
   folderD
Project
├ Source
│  └ main.py
└ Module
   └ __init__.py
Project
└ Root
   ├ Source
   │  └ main.py
   └ Module
      └ __init__.py
相对导入
当前脚本目录:Z:/github/PersonalToolkit/Root/Source/main.py
模块目录:Z:\github\PersonalToolkit\Root\Source/。\Module\\uuuu init\uuuu.py
工作目录:Z:\github\PersonalToolkit\Root\Source
然而,对于这两种情况,Pycharm显示了相同的导入提示

由此我们可以猜测Pycharm在运行时正在将项目根添加到
sys.path
,并创建了这种不同的行为

然而,我们不能期望在通常运行的情况下(主要是控制台)的行为会得到一致的结果

相反,在外部文件夹中导入模块时,只需按如下方式导入:

从os.path导入abspath,dirname
从系统导入路径
append(dirname(abspath(_文件__))+“/…)
导入模块
这确实违反了PEP-8,看起来不干净。最好是将
\uuuu main\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

Project
├ __main__.py
├ Source
│  └ main.py
└ Module
   └ __init__.py

我明白了,谢谢!因此,这就是向环境中添加路径的情况。我现在再次“重新添加”路径,应用程序似乎正在运行。我希望pycharm能够在文件中的某个地方生成“自动环境扩展”代码,这样我就可以在main中引用它作为导入pyCharmEnviFile,这样它也可以用于其他IDE。谢谢你的解释!即使在我的例子中,我也会很难使用1 main.py,因为我有多个项目,我会链接到文件夹结构中类似的库。说(客户端、监视器、用户)应用程序链接到“网络”库。