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
文件,并在其中添加这些设置以修改扩展和调试器的PYTHONPATH
:
PYTHONPATH=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 <module-name
时,Python 将当前目录添加到sys.path
的开头,这允许将该目录中的模块(例如helper
)作为***模块导入,即import helper
。运行python <script>
不会将当前目录添加到sys.path
的开头。相反,Python 将包含脚本的目录添加到 sys.path 的开头。
这里是文档的相关部分。
-m
switch
与 -c 选项一样,当前目录将添加到 sys.path 的开头。
以及-c
option 添加的文档
当前目录将被添加到 sys.path 的开头(允许将该目录中的模块作为***模块导入)
python <script>
的文档
如果脚本名称直接引用 Python 文件,则将包含该文件的目录添加到 sys.path 的开头,并将文件作为
__main__
模块执行。如果脚本名称引用目录或 zip 文件,则脚本名称将添加到 sys.path 的开头,并且该位置的
__main__.py
文件作为__main__
模块执行。
【讨论】:
以上是关于python vscode模块未找到错误的主要内容,如果未能解决你的问题,请参考以下文章
Apache2、modwsgi、Python3.6 和 Bottle 集成的问题,在 Apache2 日志中未找到模块错误