我的项目结构是这样的:
ACL
在test_app.py中,我具有以下导入语句:
- 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
在终端中,我可以使用
运行文件import my_pkg.src.app as app
运行正常,没有任何错误,但是当我右键单击test_app.py并选择“在终端中运行Python文件”时,出现以下错误:
python -m my_pkg.tests.test_app
我通过运行以下命令安装了my_pkg:
ModuleNotFoundError: No module named 'my_pkg'
如果我打开终端并运行python,然后在python中运行“将app导入my_pkg.src.app导入”,则可以正常运行。
我在做什么错。在Visual Studio代码中运行程序时,如何使导入工作?
答案 0 :(得分:0)
因为正在运行的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)
答案 1 :(得分:0)
答案 2 :(得分:0)
我能够通过更改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:模块my_pkg”将通过运行带有-m参数的__ main __.py文件以及“ Python:当前文件(集成终端)”和“ Python:当前文件(外部)”来运行我的模块终端)”打开当前文件,但将工作区文件夹命名为PYTHONPATH,这样我的导入就不会中断。
我仍然没有找到一种更改配置的方法,因此我可以右键单击一个文件并选择“在终端中运行Python文件”而不会损坏。但是我只是在终端中手动运行它,直到找到解决方案为止。