ModuleNot FoundError:没有名为“ lib”的模块

时间:2019-08-02 14:09:22

标签: python import

我试图了解python背后的导入机制,但是这段代码给出了错误。

这是我的文件夹结构:

import_test
  -calculator
   ..__init__.py
   ..operation.py
  -lib
   ..__init__.py
   ..multiply.py

当我在PyCharm IDE上运行时它正在工作,但是如果我从命令行运行,如

'py operation.py'(for now windows,for the next phase i will try on raspbian RPi)

我正在获取模块未找到错误!在互联网论坛上尝试了许多方法,但仍然没有进展。

multiply.py:

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

operation.py:

from lib.multiply import multiplier
print (multiplier(3,4))

lib / init .py:

from .multiply import multiplier

这是我跑步的输出:

File "operation.py", line 1, in <module>
    from lib.multiply import multiplier
ModuleNotFoundError: No module named 'lib'

2 个答案:

答案 0 :(得分:1)

要转到一个目录,再转到另一个目录,然后再返回,几乎总是需要编辑sys.path pycharm才能自动为项目执行此操作,而实际上并没有告诉您这样做。

使用您在问题中具有的结构应该起作用:

import_test
  -calculator
   ..__init__.py (EMPTY FILE)
   ..operation.py
  -lib
   ..__init__.py (EMPTY FILE)
   ..multiply.py

operation.py:

import os
import sys

# insert the "import_test" directory into the sys.path
sys.path.insert(1, os.path.abspath(".."))

from lib.multiply import multiplier

print (multiplier(3,4))

multiply.py:

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

运行operation.py返回:

7

答案 1 :(得分:0)

这是因为当您从计算器目录启动脚本时,python将import_test/calculator添加到sys.path中,但它对lib一无所知。

您可以按照@tgikal的建议,将父目录添加到sys.path中,但这看起来很丑陋。更好的方法是像这样运行脚本

python -m计算器。操作,您可能需要向import_test目录中添加一个空的__init__.py文件,具体取决于您的python版本。