2017-08-17 171 views
7

我试图导入一个实用程序文件,但只有在通过脚本运行代码时才会遇到奇怪的错误。ImportError:没有名为utils的模块

当运行test.py

位置:/home/amourav/Python/proj/test.py

代码:

import os 
os.chdir(r'/home/amourav/Python/') 
print os.listdir(os.getcwd()) 
print os.getcwd() 
from UTILS import * 

的输出是:

['UTILS_local.py','UTILS.py', 'proj', 'UTILS.pyc']

/home/amourav/Python

Traceback (most recent call last): File "UNET_2D_AUG17.py", line 11, in from UTILS import * ImportError: No module named UTILS

但是当我通过bash终端运行代码时,它似乎工作正常

bash-4.1$ python 
>>> import os 
>>> os.chdir(r'/home/amourav/Python/') 
>>> print os.listdir(os.getcwd()) 

['UTILS_local.py','UTILS.py', 'proj', 'UTILS.pyc']

>>> from UTILS import * 

blah blah -everything is fine- blah blah

我在Linux机器上运行的Python 2.7.10

回答

4

你的项目是这样的:

+- proj 
| +- test.py 
+- UTILS.py 
+- ... 

如果你喜欢导入UTILS .py,你可以选择:

(1)添加路径test.py到sys.path中

import os, sys 
sys.path.append(os.path.join(os.path.dirname(__file__), "..")) 
# now you may get a problem with what I wrote below. 
import UTILS 

(2)创建一个包(仅限进口)

Python 
+- proj 
| +- test.py 
| +- __init__.py 
+- UTILS.py 
+- __init__.py 
+- ... 

现在,你可以在test.py如果写这个你import Python.proj.test

from .. import UTILS 

错误的答案

我有几次这个错误。我想,我记得。

修复:不运行test.py,运行./test.py

如果你看看sys.path,你可以看到有一个空字符串,其中是执行文件的路径。

  • test.py增加''sys.path
  • ./test.py增加'.'sys.path

进口只能从"."执行,我想。

+3

你能否详细说明为什么会发生这种情况? –

+0

^^我试图重现它,但我失败了。 Python 2.7.12 – User

+0

认为它工作了一秒,但没有。 python ./test.py - >导入错误 –

相关问题