【已解决】【VSCode Python同项目内的import问题】在VSCode的Python项目中正确地import同项目下其他package中的module | 您所在的位置:网站首页 › python包的调用 › 【已解决】【VSCode Python同项目内的import问题】在VSCode的Python项目中正确地import同项目下其他package中的module |
文章目录
前言1、问题描述2、原因+解决方案其他方法==在windows上的配置方法==解决方案1解决方案2解决方案3(==如果1、2都不管用==)
小结参考文献
前言
创作开始时间:2021年8月13日04:36:49 更新:2021年9月29日18:42:26 更新2:2023年2月15日15:50:54 研究了很久的时间,网上根本没找到合适的解决方案,最后终于解决了这个困扰我已久的问题,这里记录解决方案。 另外,本文还补充了:在windows上的配置方法。 1、问题描述 ubuntu系统VSCodeAnacondapylint我的项目结构是这样的。 ├── myproject │ ├── .vscode │ │ ├── launch.json │ │ ├── settings.json │ ├── src │ │ ├── packageA │ │ │ ├── __init__.py │ │ │ ├── moduleA1 │ │ │ ├── moduleA2 │ │ ├── __init__.py │ │ ├── main.py │ │ └── __pycache__ │ ├── dev.env │ └── tests │ ├── testA.py │ └── __init__.py我有一个源文件夹src,还有一个tests文件夹(放测试用例的) 我写了一个测试模块testA.py 里面import了: from src.packageA import moduleA1就是说想import其他package中的module,然而竟然报错: ModuleNotFoundError: No module named ‘packageA’ 我真的无语了,packageA明明是一个package,不是module啊。 自此,我展开了各种尝试,漫长的探索,其中包括: 相对import的尝试绝对import的尝试修改package名字重启vscode修改vscode的Python interpreter删除__pycache__文件夹 等等…都没有用! 现在在下面给出原因和解决方案。 2、原因+解决方案原因: VSCode中需要显式地声明PYTHONPATH,不然根本找不到本项目内的模块和包的路径。 解决方案: 在myproject文件夹(即项目根目录)下创建dev.env: PYTHONPATH=./src:./tests:${PYTHONPATH}然后在.vscode/settings.json下写入: { "python.envFile": "${workspaceFolder}/dev.env" }然后重新运行一下,发现再也不报错了! 其他方法备注: 其实我以前用的都是 import sys sys.path.append(xxx)这样也可以用,但是我觉得太笨重了,我就希望简简单单的直接import:(不需要任何sys path append) from src.packageA import moduleA1所以在此作如上探究。 在windows上的配置方法 解决方案1根目录下创建.vscode\settings.json: { "python.envFile": "${workspaceFolder}/dev.env", }根目录下创建dev.env: WORKSPACE_FOLDER=D:/xxx/xxx/mappo/ PYTHONPATH=${WORKSPACE_FOLDER}/src;${WORKSPACE_FOLDER}/tests 解决方案2直接在launch.json上加上: "env": {"PYTHONPATH": "${workspaceFolder}${pathSeparator}${env:PYTHONPATH}"},如下图: 参考:How to correctly set PYTHONPATH for Visual Studio Code https://stackoverflow.com/questions/53653083/how-to-correctly-set-pythonpath-for-visual-studio-code 解决方案3(如果1、2都不管用) 要注意:路径不要有中文在文件的开始加入: import sys sys.path.insert(0,r'D:\xxx\minisim\minibin')就不报错了。 2023年2月15日15:53:10 小结以上。 创作结束时间:2021年8月13日04:55:51 参考文献关键文献: Proper relative imports: “Unable to import module” https://stackoverflow.com/questions/48973742/proper-relative-imports-unable-to-import-module在vscode中设置PYTHONPATH https://segmentfault.com/a/1190000019193186Cannot import any module from folder called “tests” using vscode #8840 https://github.com/microsoft/vscode-python/issues/8840Use a python package in the same project folder in visual studio code https://stackoverflow.com/questions/53778741/use-a-python-package-in-the-same-project-folder-in-visual-studio-code在看了几十个网页,都没找到有用的,最后反复思考,琢磨了上面这四个文献之后,我终于想到了解决方案。 次要文献: 执行文件异常报错:ImportError: attempted relative import with no known parent package https://www.cnblogs.com/xxcr/p/12781457.htmlPython项目文件引用问题:ImportError: attempted relative import with no known parent package https://blog.csdn.net/qq_23926575/article/details/107510234究极破解:尝试导入,但找不到父包!ImportError: attempted relative import with no known parent package https://blog.csdn.net/weixin_45331210/article/details/98745748【ImportError】: attempted relative import with no known parent package https://blog.csdn.net/ybw_2569/article/details/98775794 |
CopyRight 2018-2019 实验室设备网 版权所有 |