一个模块导入语句失败
好的,我找到了问题,原来是环境设置的问题。我在系统路径中有相同的模块(除了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 中。