首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ModuleNot FoundError :没有名为“lib”的模块

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

Stack Overflow用户
提问于 2019-08-02 14:09:22
回答 3查看 12.1K关注 0票数 6

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

这是我的文件夹结构:

代码语言:javascript
复制
import_test
  -calculator
   ..__init__.py
   ..operation.py
  -lib
   ..__init__.py
   ..multiply.py

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

代码语言:javascript
复制
'py operation.py'(for now windows,for the next phase i will try on raspbian RPi)

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

multiply.py:

代码语言:javascript
复制
def multiplier(a,b):
    return a + b

operation.py:

代码语言:javascript
复制
from lib.multiply import multiplier
print (multiplier(3,4))

lib/init.py:

代码语言:javascript
复制
from .multiply import multiplier

这是我运行的输出:

代码语言:javascript
复制
File "operation.py", line 1, in <module>
    from lib.multiply import multiplier
ModuleNotFoundError: No module named 'lib'
EN

回答 3

Stack Overflow用户

发布于 2019-08-02 15:53:43

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

使用您在问题中的结构,这应该是可行的:

代码语言:javascript
复制
import_test
  -calculator
   ..__init__.py (EMPTY FILE)
   ..operation.py
  -lib
   ..__init__.py (EMPTY FILE)
   ..multiply.py

operation.py:

代码语言:javascript
复制
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:

代码语言:javascript
复制
def multiplier(a,b):
    return a + b

运行operation.py返回:

7

票数 1
EN

Stack Overflow用户

发布于 2019-08-03 04:09:30

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

您可以遵循@tgikal建议并将父目录添加到sys.path中,但它看起来像一个丑陋的黑客。处理此问题的更好方法是像这样运行脚本

python -m calculator.operation,您可能需要向import_test目录中添加一个空的__init__.py文件,这取决于您的python版本。

票数 0
EN

Stack Overflow用户

发布于 2022-03-03 10:44:45

在我的例子中,我从另一个项目复制了一些代码,在代码顶部的导入中,用户构建了模块,但是我没有将这个用户构建模块复制到我的新项目中。我在原始项目中找到了这个需要的lib模块文件夹,并复制了它以摆脱消息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57328142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档