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

Mer*_*sin 7 python import

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

这是我的文件夹结构:

import_test
  -calculator
   ..__init__.py
   ..operation.py
  -lib
   ..__init__.py
   ..multiply.py
Run Code Online (Sandbox Code Playgroud)

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

'py operation.py'(for now windows,for the next phase i will try on raspbian RPi)
Run Code Online (Sandbox Code Playgroud)

我收到模块未找到错误!从网上论坛尝试了很多方法,但仍然没有进展。

乘法.py:

def multiplier(a,b):
    return a + b
Run Code Online (Sandbox Code Playgroud)

操作.py:

from lib.multiply import multiplier
print (multiplier(3,4))
Run Code Online (Sandbox Code Playgroud)

库/初始化.py:

from .multiply import multiplier
Run Code Online (Sandbox Code Playgroud)

这是我运行的输出:

File "operation.py", line 1, in <module>
    from lib.multiply import multiplier
ModuleNotFoundError: No module named 'lib'
Run Code Online (Sandbox Code Playgroud)

tgi*_*kal 1

要进入一个目录、进入另一个目录,然后返回,几乎总是需要编辑,pycharmsys.path往往会自动为项目执行此操作,而不会真正告诉您它是这样做的。

使用问题中的结构,这应该有效:

import_test
  -calculator
   ..__init__.py (EMPTY FILE)
   ..operation.py
  -lib
   ..__init__.py (EMPTY FILE)
   ..multiply.py
Run Code Online (Sandbox Code Playgroud)

操作.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))
Run Code Online (Sandbox Code Playgroud)

乘法.py:

def multiplier(a,b):
    return a + b
Run Code Online (Sandbox Code Playgroud)

运行操作.py 返回:

7