在Ubuntu中,我具有以下目录结构:
/Test/Foo
/Test/Foo/foo.py
如果我在/Test
中,并且从命令行运行python
,然后运行from Foo import foo
,则会收到以下错误:ImportError: No module named Foo
。
但这非常令人困惑,因为根据here,在导入时用于搜索的目录之一是从中调用脚本的目录。但是,如果我打印出sys.path
,则其中不包含/Test
,它仅包含其他标准的Python目录。
知道发生了什么吗?
答案 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