从目录导入给出ImportError

时间:2020-02-15 21:41:05

标签: python

在Ubuntu中,我具有以下目录结构:

/Test/Foo
/Test/Foo/foo.py

如果我在/Test中,并且从命令行运行python,然后运行from Foo import foo,则会收到以下错误:ImportError: No module named Foo

但这非常令人困惑,因为根据here,在导入时用于搜索的目录之一是从中调用脚本的目录。但是,如果我打印出sys.path,则其中不包含/Test,它仅包含其他标准的Python目录。

知道发生了什么吗?

2 个答案:

答案 0 :(得分:0)

如果我说对了,这里您要实现的目标是将Foo打包,将foo打包。

由于Foo未被打包成一个软件包(目录中没有__init__.py),因此它不被识别为一个软件包,因此也无法导入。

当您进入/Test/Foo时,您只是在导入模块foo,它将起作用。

您可能需要在__init__.py内创建一个/Test/Foo文件,然后从包中导入模块。

或者您可以尝试相对导入。像from .Foo import foo之类的东西。

答案 1 :(得分:0)

如果您只需要一个函数,请尝试以下操作(python 2.7):
sys.path.insert()插入python用于查找文件的路径中指定的目录。
commify.py是子目录xyz中的文件,其中包含commify(value)函数

import os
import sys
sys.path.insert(0, os.getcwd() + r'\xyz')
from commify import commify

print commify(12345678)

输出:12,345,678