【已解决】【VSCode Python同项目内的import问题】在VSCode的Python项目中正确地import同项目下其他package中的module 您所在的位置:网站首页 python包的调用 【已解决】【VSCode Python同项目内的import问题】在VSCode的Python项目中正确地import同项目下其他package中的module

【已解决】【VSCode Python同项目内的import问题】在VSCode的Python项目中正确地import同项目下其他package中的module

2023-08-14 03:43| 来源: 网络整理| 查看: 265

文章目录 前言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 实验室设备网 版权所有