python - 模块未找到错误 : No module named 'lib'

标签 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)

我收到模块未找到错误!尝试了网上论坛的很多方法,还是没有任何进展。

乘法.py:

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

操作.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'

最佳答案

向上一个目录,到另一个目录,然后返回,几乎总是需要编辑 sys.path pycharm 往往会为项目自动执行此操作,而不会真正告诉你它做了。

使用问题中的结构应该可行:

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

操作.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))

乘法.py:

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

运行 operation.py 返回:

7

关于python - 模块未找到错误 : No module named 'lib' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57328142/

相关文章:

matlab - Matlab,从csv文件读取多个2d数组

python - 将列从 csv 动态导入到 sqlite3 和 python 中的数据库表中

python - 求解 C*M = N(C、M 和 N 是矩阵),其中 M 已知且 N 的结构在 SymPy 中给出

python - 如何更改Google语音识别的语言

python - sklearn columntransformer 包括现有功能(例如 : boolean) that do not need transformed/preprocessed in pipeline

python - 如何在不使用单独的替换函数的情况下循环正则表达式匹配并进行替换?

go - 使用括号导入多个包会出错吗?

python - pep8 小烦恼

swift - 本地文件路径不会导入

eclipse - 在eclipse中查找该类来自哪个库