无法导入模块:在工作文件中找不到模块,但在另一个文件中工作正常
Can't import module: module can't be found in working file but works fine in another file
我有以下文件结构
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'
我是否忘记了模块在它们包含在其中的包之外协同工作所需要的东西?
问题出在 SecondModule.py
中的导入语句。
我能够使用您的示例以及当我更改导入语句时重现错误
import FirstModule.py
到
from Package import FirstModule
一切正常。您不应该使用文件名,即从导入语句
中删除 .py
您应该在导入模块时明确使用包名称,或者使用相对导入,即
from . import FirstModule
或者如果您只想要特定的 objects/functions
from .FirstModule import some_function
我有以下文件结构
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'
我是否忘记了模块在它们包含在其中的包之外协同工作所需要的东西?
问题出在 SecondModule.py
中的导入语句。
我能够使用您的示例以及当我更改导入语句时重现错误
import FirstModule.py
到
from Package import FirstModule
一切正常。您不应该使用文件名,即从导入语句
中删除 .py您应该在导入模块时明确使用包名称,或者使用相对导入,即
from . import FirstModule
或者如果您只想要特定的 objects/functions
from .FirstModule import some_function