2016-09-30 71 views
0

目前,我有以下目录结构:Python的导入错误不工作

Folder/ 
    package/ 
     __init__.py, .. many python files 
    subfolder/ 
     file1.py 

现在,我的问题是,我在Folder目录。我可以运行python,然后运行import package。这工作正常。但是,在我的file1.py中,我在开始时输入package,但是当我运行python subfolder/file1.py时,找不到名为package的模块。

编辑:我目前有__ init__.py(2个下划线)

+0

如何在file1.py中导入你的包? – MMF

+1

将'_init_.py'重命名为'__init __。py'应该可以帮您解决 –

+0

我怀疑下划线是一个错字:即使问题得到解决,问题仍会存在。 – kfb

回答

0

重命名_init_.py__init__.py(两个下划线)

2

在后一种情况下,Python不能找到package,因为它是不可见的sys.pathsys.path将包含当前正在执行的脚本的父目录。

所以,当你从Folder运行Python,此内容/path/to/Folderimport package正确地从这个发现package目录。在第二种情况下,此条目将为/path/to/Folder/subfolder,import package将失败,因为它会尝试查找/path/to/Folder/subfolder/package

+0

那么解决这个问题的好方法是什么? – user3362840

+0

很难回答这个问题而不知道你想达到什么目的。你可以在脚本中操作'sys.path'来将正确的软件包带入作用域(例如,在导入'package'之前,在'file1.py'中将'/ path/to/Folder'加入'sys.path'中),但通常重新考虑你的架构是一种更好的方法。 – kfb