問題
在pycharm中導包很容易, 只要將src目錄mark為src root就行, 但在vscode中導包就有點麻煩, 我使用的是code-runner來運行python, 在沒有配置code-runner之前無論如何都導如不了包
目錄結構
src
├── x
│ ├── __init__.py
│ └── x.py
├── y
│ ├── __init__.py
│ └── y.py
├── __init__.py
└── z.py
x目錄, y目錄, z.py在同一級下; x目錄下有x.py模塊, y目錄下有y.py模塊
解決
設置路徑
如果你使用code-runner插件來運行python, 就在全局settings.json中加入"code-runner.fileDirectoryAsCwd": true

圖1 配置code-runner
如果使用vscode自帶的運行器運行python, 就需要自己配置launch.json文件, 這時需要在configurations中加入"cwd": "${fileDirname}"

圖2 配置運行文件
這樣設置了之后, 運行時環境就為控制台當前運行文件的路徑
導包
z.py中導入x.py
導入同級別的包, 導入x包的x模塊的printX函數
# x.py
def printX():
print("這里是x")
# z.py
from x.x import printX
printX()
結果:

圖3
x.py中導入z.py
這屬於導入上級的包, 需要用sys模塊設定一下路徑為..
當前目錄上級, sys模塊一定要在z模塊前引入
# x.py
import sys
sys.path.append("..")
import z
z.printZ()
# z.py
def printZ():
print("這里是z")
結果:

圖4
y.py中導入x.py
這種情況跟x.py中導入z.py類似
# x.py
def printX():
print("這里是x")
# y.py
import sys
sys.path.append("..")
from x.x import printX
printX()
結果:

圖5