python vscode模块未找到错误

Posted

技术标签:

【中文标题】python vscode模块未找到错误【英文标题】:python vscode modulenotfounderror 【发布时间】:2021-11-18 23:38:27 【问题描述】:

我有一定的项目结构:

 - azima
   - .vscode
   - core
     - project_setup.py
   - helper
     - log_helper
   - venv

在 project_setup.py 中:

import os
import json
import numpy as np
import pandas as pd
import random
from helper.log_helper import log

if __name__ == "__main__":
    print('hello world')

在终端中运行这个文件:

(venv) rmali@rakeshmali:~/git/azima$ /home/rmali/git/azima/venv/bin/python /home/rmali/git/azima/core/project_setup.py
Traceback (most recent call last):
  File "/home/rmali/git/azima/core/project_setup.py", line 6, in <module>
    from helper.log_helper import log
ModuleNotFoundError: No module named 'helper'

我收到此错误。我究竟做错了什么?我错过了什么吗?

但是像这样运行python -m core.project_setup 可以。

【问题讨论】:

你试过from .helper.log_helper import log吗? @SamMatzko ImportError: attempted relative import with no known parent package 我收到此错误 然后使用你的导入方法(from helper.log_helper import log),但在它之前输入sys.path.append(os.path.dirname(os.path.dirname(__file__)))。这应该将azima 添加到 Python 搜索模块的路径列表中。 您的目录结构中有__init__.py 脚本吗?这些会告诉 Python 您将文件夹视为包和子包。 可能与***.com/questions/40185437/… 相关,如果您安装了多个 python 并且 VSCode 选择了一个默认的 python 解释器,而该解释器不是您安装要导入的模块的位置 【参考方案1】:

原因:

文件夹azima 的路径不在sys.path(PYTHONPATH) 中。

解决方案:

你可以这样做来修改PYTHONPATH:

    在settings.json文件中添加这些以修改终端中的PYTHONPATH

    “终端.integrated.env.windows”: “PYTHONPATH”:“xxx/site-packages”

    在您的工作区下创建一个.env 文件,并在其中添加这些设置以修改扩展和调试器的PYTHONPATHPYTHONPATH=xxx/site-packages

可以参考here了解这两种配置的效果。

    直接在python文件中修改。在 b.py 文件中添加这些代码。

    导入系统; sys.path.append("xxx/Project/src")

【讨论】:

【参考方案2】:

跑步的原因

(venv) rmali@rakeshmali:~/git/azima$ python ./core/project_setup.py

失败

(venv) rmali@rakeshmali:~/git/azima$ python -m core.project_setup

成功之处在于,当运行python -m &lt;module-name 时,Python 将当前目录添加到sys.path 的开头,这允许将该目录中的模块(例如helper)作为***模块导入,即import helper。运行python &lt;script&gt; 不会将当前目录添加到sys.path 的开头。相反,Python 将包含脚本的目录添加到 sys.path 的开头。

这里是文档的相关部分。

-m switch

与 -c 选项一样,当前目录将添加到 sys.path 的开头。

以及-c option 添加的文档

当前目录将被添加到 sys.path 的开头(允许将该目录中的模块作为***模块导入)

python &lt;script&gt; 的文档

如果脚本名称直接引用 Python 文件,则将包含该文件的目录添加到 sys.path 的开头,并将文件作为 __main__ 模块执行。

如果脚本名称引用目录或 zip 文件,则脚本名称将添加到 sys.path 的开头,并且该位置的 __main__.py 文件作为 __main__ 模块执行。

【讨论】:

以上是关于python vscode模块未找到错误的主要内容,如果未能解决你的问题,请参考以下文章

python模块未找到错误没有模块命名

Python - 未找到 Numpy 模块

通过命令提示符运行python程序时未找到模块错误

dotenv 模块未找到错误 pythonanywhere

模块未找到 Python

Apache2、modwsgi、Python3.6 和 Bottle 集成的问题,在 Apache2 日志中未找到模块错误