不要烦心柿 2024-04-30 15:42 采纳率: 100%
浏览 90
已结题

Python:未解析的引用

我的Python项目如图

img

在notebooks/init.ipynb中,添加了路径sys.path.insert(0, '../src')
接下来pycharm提示错误:
from const import *
from autismDataset import Dataset
等是未解析的引用
请问怎么样能改正这个错误?

  • 写回答

4条回答 默认 最新

  • 专家-皆知 2024-04-30 15:43
    关注

    参考免费微信小程序:皆我百晓生 作答,经由专家-皆知整理回复,如问题解决,望采纳;如仍有疑问,请评论回复。

    为了解决您在notebooks/init.ipynb中遇到的导入问题,确保Python能够正确地找到src目录下的模块,您已经尝试通过修改系统路径来解决,但仍然遇到未解析的引用错误。这通常是因为Python的导入机制未能正确识别到您的模块。下面是一个详细的步骤指南来帮助您解决这个问题:

    1. 确认文件结构

    首先,确认您的文件结构与描述相匹配。基于描述,您的项目结构应该是这样的:

    project_folder/
    │
    ├── notebooks/
    │   ├── init.ipynb
    │   ├── paper_ablation.ipynb
    │   └── ... (其他ipynb文件)
    │
    ├── src/
    │   ├── model/
    │   │   ├── __init__.py
    │   │   ├── ml.py
    │   │   └── visualization.py
    │   ├── __init__.py
    │   ├── autismDataset.py
    │   ├── const.py
    │   ├── const_autism.py  # 注意这里的命名是否与导入一致
    │   ├── experiments.py
    │   ├── metrics.py
    │   ├── prg-py/  # 这里看起来像是一个目录名称错误,应确认
    │   ├── stats.py
    │   └── utils.py
    │
    └── ... (可能还有其他顶层目录或文件)
    

    2. 修改导入语句

    notebooks/init.ipynb中,当您使用sys.path.insert来添加路径时,应该确保这样做之后的导入语句正确无误。但是,更推荐的做法是在每个需要导入src模块的脚本或笔记本顶部使用相对导入,如果项目被设置为一个包。不过,既然您已经在尝试调整系统路径,确保这样做后,导入语句应该是这样的:

    import sys
    sys.path.insert(0, '..')  # 这样也可以,且更简洁
    
    from src.const import *  # 确保const.py存在且正确命名
    from src.autismDataset import Dataset  # 确保路径和文件名正确
    

    3. 确保__init__.py

    每个需要作为Python包导入的目录下都应该有一个__init__.py文件,即使是空文件。从Python 3.3开始,这不再是强制性的,但在一些环境或旧版本的Python中,它仍然是必要的。确保src及其子目录model都有__init__.py

    4. 检查模块名称

    注意constconst_autism.py之间的区别。如果您想从const_autism.py导入内容,导入语句应该是from src.const_autism import *,而不是简单的from const import *,除非您在const.py中定义了或导入了所有需要的内容。

    5. PyCharm配置

    如果您在PyCharm中工作,还需要确保项目被正确配置为一个Python项目,并且src被识别为源根。可以通过以下步骤操作:

    • 打开PyCharm的项目设置(File > Settings 或 Preferences on macOS)
    • 转到“Project Structure”
    • 确认src目录被标记为“Sources”

    结论

    按照上述步骤检查和调整后,应该能解决未解析的引用问题。如果问题依然存在,可能需要检查Python环境的设置或者考虑是否因为虚拟环境的问题导致Python解释器没有正确指向您的项目依赖。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 5月19日
  • 已采纳回答 5月11日
  • 创建了问题 4月30日