无法导入模块:在工作文件中找不到模块,但在另一个文件中工作正常
Posted
技术标签:
【中文标题】无法导入模块:在工作文件中找不到模块,但在另一个文件中工作正常【英文标题】:Can't import module: module can't be found in working file but works fine in another file 【发布时间】:2021-07-09 23:12:07 【问题描述】:我有以下文件结构
Working Directory
|
|-- Package
| |-- __init__.py
| |-- FirstModule.py
| |-- SecondModule.py
| |-- TestingFile.ipynb
|
|-- WorkingFile.ipynb
FirstModule.py
def func(n):
return n+1
SecondModule.py
import FirstModule
def func2(n):
value = FirstModule.func(n)
return (n, value)
当我将任一模块导入TestFile.ipynb
时,它们都可以正常工作,如下所示:
TestingFile.ipnyb
import FirstModule # Works Fine
import SecondModule # Works Fine
但是,如果我在 WorkingFile.ipynb
并尝试导入 SecondModule
,我会收到 ModuleNotFoundError
。更具体地说:
WorkingFile.ipynb
from Package import SecondModule as sm
from Package import FirstModule as fm
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-14-8a837a311e6c> in <module>
2 import numpy as np
3
----> 4 from Package import SecondModule as sm
5 from Package import FirstModule as fm
~\Documents\Jupyter Notebooks\Working Directory\Package\SecondModule.py in <module>
26 from datetime import datetime
27
---> 28 import FirstModule as fm
29
30 # Constants
ModuleNotFoundError: No module named 'FirstModule'
我是否忘记了模块在包含它们的包之外协同工作所需的东西?
【问题讨论】:
第一次导入时不要使用.py
第二次您必须从工作目录开始,例如from package.firstmodule import what_you_need
或 import package.firstmodule
@Matiiss 抱歉,您的第一个问题是问题中的拼写错误。在我的实际代码中它没有 .py
我已经纠正了我的问题中的错字。
【参考方案1】:
问题在于SecondModule.py
中的导入语句。
我能够使用您的示例以及当我更改导入语句时重现错误
import FirstModule.py
到
from Package import FirstModule
一切正常。您不应使用文件名,即从导入语句中删除 .py
您应该在导入模块时明确使用包名,或者使用相对导入,即
from . import FirstModule
或者如果您只想要特定的对象/功能
from .FirstModule import some_function
【讨论】:
谢谢!.py
实际上只是我的问题中的一个错字;但是将SecondModule.py
中的import FirstModule
更改为from . import FirstModule
解决了我的问题。以上是关于无法导入模块:在工作文件中找不到模块,但在另一个文件中工作正常的主要内容,如果未能解决你的问题,请参考以下文章
OSError: [WinError 126] 在 Python 中找不到指定的模块
为啥 Aptana 3 (OS X) 在导入的项目中找不到 django 设置模块?