一个模块导入语句失败

2 投票
4 回答
672 浏览
提问于 2025-04-15 11:17

好的,我找到了问题,原来是环境设置的问题。我在系统路径中有相同的模块(除了options.py),所以它是从那里导入的。谢谢大家的帮助。

我有一系列的导入语句,最后一个导入语句不工作。有人知道为什么吗?options.py和其他文件在同一个目录里。

from snipplets.main import MainHandler
from snipplets.createnew import CreateNewHandler
from snipplets.db import DbSnipplet
from snipplets.highlight import HighLighter
from snipplets.options import Options

导入错误:没有名为options的模块

我在snipplets目录中的__init__.py文件是空的。

4 个回答

1

下面的代码能正常工作吗?

import snipplets.options.Options

如果能,那你其他的代码片段文件里可能定义了一个叫做 options 的全局变量。

2

你的 主分支 里没有 options.py 这个文件。可能是你开发的分支和主分支之间有冲突吗?

如果这是你的实际代码,那么在第21行你有一个 option 变量。

2

我怀疑你其他的导入可能把 snipplets 重新定义了,或者你其他的模块改变了 sys.path


编辑

“流程是这样的:把 snipplets 包添加到路径中导入……”

不对。

不要修改 sys.path —— 这样会引发问题。修改 site.path 会让你对路径上有什么、没有东西,以及它们的顺序感到困惑。

最简单、最可靠、最明显、最可控的做法有以下几种。选择其中一种。

  • 定义 PYTHONPATH(只需一次,在你的程序外部)。这是一个简单的环境变量,几乎和在 site-packages 中的安装一样。

  • 把你的包安装到 site-packages 中。

撰写回答