Jupyter 在同一目录中找不到 python 导入

Jupyter can't find python imports in same directory

我需要将几个文件中的一些函数导入到 Jupyter Notebook 中,当我尝试执行此操作时,尽管存在所有必需的文件,但仍出现找不到模块的错误。

原始导入代码如下所示:

from deep_boltzmann.networks.training import MLTrainer, FlexibleTrainer
from deep_boltzmann.networks.invertible import invnet, EnergyInvNet
from deep_boltzmann.models.openmm import OpenMMEnergy

运行它returns出现如下错误: ModuleNotFoundError: No module named 'deep_boltzmann'

这是 st运行ge 因为我 运行 这个文件来自 deep_boltzmann 文件夹,它包含另一个 deep_boltzmann 文件夹(我知道这不方便,它不是我的代码),其中包含上面代码中引用的所有文件夹和文件。我试过更改 Jupyter notebook 位置,使用 sys 手动附加路径,然后只导入文件,但它最终给了我同样的错误,因为导入的文件(训练、可逆)使用最初出错的相同导入。 目前我的代码看起来像这样(运行 来自 deep_boltzmann 文件夹)这使得文件的初始导入正确,但是函数的导入仍然不起作用:

import sys
sys.path.append("/networks")
sys.path.append("/models")
import training.py
import invertible.py
import openmm.py

产生以下错误:

<ipython-input-4-f363f4388356> in <module>
      7 sys.path.append("/networks")
      8 sys.path.append("/models")
----> 9 import training.py
     10 import invertible.py
     11 import openmm.py

~/Downloads/Boltzmann/deep_boltzmann/Thesis/training.py in <module>
      3 import tensorflow as tf
      4 import keras
----> 5 from deep_boltzmann.networks.invertible_coordinate_transforms import MixedCoordinatesTransformation
      6 
      7 class MLTrainer(object):

ModuleNotFoundError: No module named 'deep_boltzmann'

我已经阅读了这个问题的其他实例并尝试了解决方案,例如将 init.py 文件添加到 boltzmann 文件夹(它已经存在),添加一些 pythonpath变量,显然也用 sys 手动附加路径,但没有任何效果。

您的 sys.path.append 语句无效的原因是您以尾随“/”开始路径,这表明它们是绝对路径,即使它们不应该是。

您可以将完整路径添加到要导入的模块,或者,如果您想使用相对路径,请执行以下操作:

import os
sys.path.append(os.path.join(os.path.abspath(os.getcwd()), "networks"))

此处,os.path.abspath(os.getcwd())计算当前工作目录的绝对路径,然后os.path.join将其与您的相对路径相结合。

最好的, 霍曼