python - 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 中的一个新问题,因为我不记得过去有过此类问题吗?
解决方案
因为如果你运行B.py
,Parent folder of Package folder
将被添加到 中sys.path
,等于你sys.path.append("Path to the Package")
在A.py
文件中添加。
但是,当您运行 时A.py
,它会将Package folder
而不是添加Parent folder of Package folder
到sys.path
.
系统路径:
指定模块搜索路径的字符串列表。从环境变量 PYTHONPATH 初始化,加上依赖于安装的默认值。
在程序启动时初始化时,此列表的第一项 path[0] 是包含用于 调用 Python 解释器的脚本的目录。
如果您在调试模式(F5)下运行 python 文件,并且Package folder
是工作区的子文件夹,您可以PYTHONPATH
在 launch.json 文件中配置:
"env": {
"PYTHONPATH": "${workspaceFolder}"
},
推荐阅读
- javascript - 如何在 onclick 函数中传递 3 个参数。参数在 php 标签内
- c - (第一个和最后一个),(第二个和最后一个但1)的乘积相加等等数组的数字
- node.js - AWS Lambda 链接函数不会打印我的日志记录
- android - Google Fit SDK 返回包含空数据点的数据集
- c# - 在游戏循环中使用结构与引用变量
- python - 带有 Seleneium Webdriver .text 的 Python 不显示
- javascript - 开玩笑地模拟静态方法
- meteor - Meteor.users 发布和订阅不匹配
- json - 电子打包成asar目标windows,用api键设置配置json,安全吗?
- javascript - 根据其值更新数组元素