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
将其与您的相对路径相结合。
最好的,
霍曼
我需要将几个文件中的一些函数导入到 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
将其与您的相对路径相结合。
最好的, 霍曼