vs code運行python導入上級目錄模塊問題


問題

在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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM