python不从当前目录

时间:2016-12-07 18:32:47

标签: python python-2.7 python-import

我在linux环境中使用python 2.7并且在某些条件下导入.py文件时遇到问题。我的目录树如下:

/mainFolder
    executable.py
    /Folder
         input_file.py

executable.py使用第input_file.py

导入__import__('input_file')

当我在mainFolder/Folder文件夹中并运行../executable.py时,我会收到输出:ImportError: No module named input_file

当我将input_file.py移到mainFolder时,它就有效了。从我看来,我认为input_file.py不是在python的路径中,我知道如何解决这个问题。

我的印象虽然它应该按原样运行,因为这是来自github存储库的代码,并且可能适用于作者的计算机,但显然并非如此。< / p>

是否有可以更改的设置,因此我不必执行sys.path.append(0,'mainFolder/Folder')之类的操作?

2 个答案:

答案 0 :(得分:2)

python中的

“Packages”由名为

的文件标识
  

<强> __初始化__。PY

在此包文件夹的根目录中。

在这种情况下,您的树应显示为:

/mainFolder
    executable.py
    /Folder
         **__init__.py**
         input_file.py

在这种情况下,如果您想将import module:input_file作为模块,则可以在可执行文件中声明:

from Folder import input_file

甚至

from Folder.input_file import *
from Folder import *

作为this response中的替代和以下解释,我为您的目录结构实现了一个示例:

executable.py文件内容:

Folder = __import__('Folder.input_file')
print(Folder.input_file.summm(1,2))

input_file.py文件内容:

def summm(a, b):
    return a+b

这很难看,但是按照原始结构建立一个例子。在这种情况下,在__init__.py文件夹中添加Folder文件是没有必要的。

答案 1 :(得分:0)

您可以轻松修复它

import Folder.input_file

__import__('Folder.input_file')

Folderinput_file.py所在文件夹的名称。