ImportError: No module named utils

放肆的年华 提交于 2019-12-30 17:22:57

问题


I'm trying to import a utilities file but running into a weird error only when I run the code through a script.

When I run test.py

location: /home/amourav/Python/proj/test.py

code:

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

The output is:

['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

but when I run the code through the bash terminal, it seems to work fine

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

I'm running Python 2.7.10 on a linux machine


回答1:


Your project looks like this:

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

If you like to import UTILS.py, you can choose:

(1) add the path to sys.path in test.py

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) create a package (imports only)

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

Now, you can write this in test.py if you import Python.proj.test:

from .. import UTILS

WRONG ANSWER

I had this error several times. I think, I remember.

Fix: do not run test.py, run ./test.py.

If you have a look at sys.path, you can see that there is an empty string inside which is the path of the file executed.

  • test.py adds '' to sys.path
  • ./test.py adds '.' to sys.path

Imports can only be performed from ".", I think.



来源:https://stackoverflow.com/questions/45741254/importerror-no-module-named-utils

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!