无法导入模块:在工作文件中找不到模块,但在另一个文件中工作正常

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