【发布时间】:2021-12-11 22:05:47
【问题描述】:
虽然有多个关于自定义模块未找到错误的堆栈溢出帖子,但这些解决方案(例如this one)对我的情况没有帮助。
我的文件夹结构是这样的:
project
|-- app
| |-- script.py
|-- src
| |-- __init__.py
| |-- file.py
在我的script.py 我有这个代码
import pandas as pd
import streamlit as st
from project.src.file import func
在windows7机器上使用VS Code,我把目录改成project,并激活了conda虚拟环境,然后执行代码streamlit run app\script.py,出现这个错误
ModuleNotFoundError: No module named 'project'
将脚本更改为from src.file import func 导致此错误
ModuleNotFoundError: No module named 'src'
有人可以解释发生了什么吗?为什么即使我在文件夹 src 中有所需的 __init__.py,Python 也找不到我的自定义模块。
【问题讨论】:
-
如果不是 Windows,您需要运行 app/script.py(正向)斜杠,而不是反斜杠。如果您的当前目录是项目,那么您的模块是 src.file,而不是 project.src.file。并且项目不是一个包,因为它没有_ _ init _ _.py,只有它的子目录。
-
@YuriFeldman,我的机器是 Windows 7。不幸的是,更改为
from src.file import func不起作用。 -
然后我会检查 file.py 是否包含一个 func 并且您当前的目录确实是项目(import os; print(os.getcwd()) 在导入之前)。后者实际上是主要嫌疑人。与任何其他编程项目一样,我还将确保其路径(从分区根目录开始)不包含非 ASCII 字符(例如您的用户名),也不包含空格。
标签: python python-import importerror streamlit