1

我对 Python 很陌生并且有奇怪的错误。我在 Eclipse 和命令行中使用 Eclipse/PyDev 进行开发,使用 Python 2.7.3。我创建了几个模块,每个文件夹都有init .py 文件和其他源文件。当我尝试__name__ == '__main__'从 Eclipse 执行文件时,它工作正常,但是当我调用时从命令行

python models.py

Traceback (most recent call last):
  File "models.py", line 8, in <module>
    from database import uuid_generator
ImportError: No module named database

看起来在此处输入图像描述 有人可以告诉我可能是什么问题吗?

4

3 回答 3

3

database父目录不在sys.path(pythonpath)中。尝试python -mdatabase.uuid_generator在父(顶层)目录中运行脚本。或者创建一个包装脚本:

from database.uuid_generator import main

main()

并将其放在database的父(顶级)目录中。当您调用此脚本时,它的目录会sys.path自动添加到其中,因此一切正常,无需修改database目录或PYTHONPATH环境变量中的模块。

只有顶层目录中没有__init__.py(不是 Python 包)需要在sys.pathie 中,database目录不应该在sys.path.

粗心的请参阅陷阱

于 2012-12-25T02:11:58.973 回答
2

显然 Eclipse 已将数据库目录添加到模块搜索路径中。

要在不修改脚本的情况下获得相同的效果,您可以将数据库路径附加到 $PYTHONPATH 环境变量中。

如果您愿意修改脚本,您可以在导入相关模块后将其添加到顶部sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

未经测试的黑客

请参阅下面的 JFSebastian 的回答和评论

于 2012-12-25T01:37:06.010 回答
1

尝试改用这个

from uuid_generator

编辑:确保 uuid_generator.py 与 models.py 位于同一文件夹中

于 2012-12-25T01:34:45.557 回答