[英]How to import from local python packages in VS Code?
我的項目結構是這樣的:
- my_pkg
setup.py
README.md
- my_pkg
__init__.py
__main__.py
- src
app.py
part.py
__init__.py
- tests
test_app.py
test_parts.py
__init__.py
在test_app.py中我有以下import語句:
import my_pkg.src.app as app
在我的終端我可以使用運行該文件
python -m my_pkg.tests.test_app
這運行正常,沒有任何錯誤,但是當我右鍵單擊test_app.py並選擇“在終端中運行Python文件”時,我收到以下錯誤:
ModuleNotFoundError: No module named 'my_pkg'
我通過運行安裝了my_pkg:
pip install -e .
如果我打開一個終端並運行python並在python中運行“import my_pkg.src.app as app”它可以正常工作。
我究竟做錯了什么。 在visual studio代碼中運行程序時,如何讓我的導入工作?
因為您運行的cwd位於“test.py”文件中。
您需要將root目錄添加到系統路徑
import sys
import os
sys.path.append(os.path.join(os.path.dir(__file__), "from/file/to/root"))
print (sys.path)
我能夠通過更改launch.json文件找到一種方法來使調試器工作:
{
"version": "0.1.0",
"configurations": [
{
"name": "Python: Module: my_pkg",
"type": "python",
"request": "launch",
"module": "my_pkg",
"console": "integratedTerminal"
},
{
"name": "Python: Current File (Integrated Terminal)",
"type": "python",
"request": "launch",
"program": "${file}",
"env" : {"PYTHONPATH": "${workspaceFolder}"},
"console": "integratedTerminal"
},
{
"name": "Python: Remote Attach",
"type": "python",
"request": "attach",
"port": 5678,
"host": "localhost",
"pathMappings": [
{
"localRoot": "${workspaceFolder}",
"remoteRoot": "."
}
]
},
{
"name": "Python: Current File (External Terminal)",
"type": "python",
"request": "launch",
"program": "${file}",
"env" : {"PYTHONPATH": "${workspaceFolder}"},
"console": "externalTerminal"
}
]
}
“Python:Module my_pkg”將通過運行帶有-m參數的__ main __。py-file和“Python:當前文件(集成終端)”和“Python:當前文件(外部終端)”來運行我的模塊運行當前文件打開,但將workspaceFolder作為PYTHONPATH,這樣我的導入就不會中斷。
我還沒有找到一種方法來更改配置,以便我可以右鍵單擊一個文件並選擇“在終端中運行Python文件”而不會破壞它。 但我只是手動在終端中運行它,直到找到解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.