首页 > 解决方案 > ModuleNotFoundError:没有从另一个脚本调用脚本后命名的模块

问题描述

假设我有以下文件结构:

  Package/
           __init__.py
           A.py
  B.py

里面__init__.py我有以下内容:

__init__.py/
 import numpy as np
 import pandas as pd

然后我在 A.py 脚本中发出以下命令:

A.py/
from Package import *

但是,我收到一条错误消息,指出未定义模块名称 Package。

ModuleNotFoundError: No module named Package

我认为from Package import *意味着在__init__.py.

我可以按预期运行 A.py 内容并使用 B.py 的init导入。(使用from Package import *

我正在使用 VSCode 和 Anaconda,我的操作系统是 Windows 10。

我可以每次使用以下命令将项目文件夹附加到我的 PythonPath:

sys.path.append("Path to the Package")

但我不想每次都运行这段代码。

谁能解释是什么问题?这是 Python 中的一个新问题,因为我不记得过去有过此类问题吗?

标签: pythonvisual-studio-codeanacondapackage

解决方案


因为如果你运行B.pyParent folder of Package folder将被添加到 中sys.path,等于你sys.path.append("Path to the Package")A.py文件中添加。

但是,当您运行 时A.py,它会将Package folder而不是添加Parent folder of Package foldersys.path.

系统路径

指定模块搜索路径的字符串列表。从环境变量 PYTHONPATH 初始化,加上依赖于安装的默认值。

在程序启动时初始化时,此列表的第一项 path[0] 是包含用于 调用 Python 解释器的脚本的目录。

如果您在调试模式(F5)下运行 python 文件,并且Package folder是工作区的子文件夹,您可以PYTHONPATH在 launch.json 文件中配置:

  "env": {
    "PYTHONPATH": "${workspaceFolder}"
  },

推荐阅读