2016-03-11 103 views
10

我在调试和运行时在pycharm中有输入错误。如何导入位于pycharm项目中相同子目录中的python文件

我的项目结构根植得当,etc./HW3/.因此HW3是根目录。

我有一个HW3的子文件夹,util和一个文件,util/util.py。我在另一个文件util中调用run_tests.py

run_tests.py,我有以下进口结构,

from util.util import my_functions, etc. 

这给出了输入错误,from util.util import load_dataset,proportionate_sample ImportError: No module named 'util.util'; 'util' is not a package


然而,在完全相同的项目,在其他目录(同一水平我有一个文件data/data_prep.py,它还使用类似的import语句从util/util.py导入函数...并且它运行时没有任何问题秒。


很显然,我这样做的功课,所以我没那么经历过......但我已经这样做了确切的配置在过去3个家庭作业,跑进零层的问题,所以我没有想法如何甚至解决这个问题 - 尤其是当其他文件工作。


当我将文件移动到另一个目录时,问题消失。所以我想这个问题是如何导入位于pycharm项目中相同目录中的python文件?因为如果我只是做import util pycharm会引发错误,并提示我使用根目录中的全名。

+0

你有一个'__init __。py'如果没有,创建一个,并添加来自'util.util进口my_function'然后尝试文件 – danidee

+0

进口它,我把'__init__。在基本目录(HW3在我的问题)与该行中的py'吗? – bordeo

+0

no在'util'文件夹中,它告诉python它是一个包,'__init __。py'也可以用于导入/加载模块 – danidee

回答

5

如果你没有一个__init__.py创建一个并添加此行

from util.util import my_function 

,那么你可以很容易地导入模块中的脚本 的__init__.py告诉蟒蛇,它应该把该文件夹作为一个Python包,它也可以用于导入/加载模块。

在大多数情况下,__init__.py是空的。

报价

的__init__.py文件,才能使Python治疗 目录为一个包的文档;这样做是为了防止 目录具有公共名称(如字符串),无意中隐藏了稍后在模块搜索路径中发生的有效模块。在 最简单的情况下,__init__.py可以只是一个空文件,但它也可以为包执行初始化代码或设置__all__ 变量,稍后介绍。

2

Pycharm可以将.py文件,你会从同一文件夹导入之前只需添加.。你的情况,这将是

from .util import my_functions 
相关问题