【问题标题】:path problem : NameError: name '__file__' is not defined路径问题:NameError: name '__file__' is not defined
【发布时间】:2020-12-14 09:27:04
【问题描述】:
import os.path as osp
import torch
import torch.nn as nn
import torch.nn.functional as F
from torch_geometric.datasets import MNISTSuperpixels
import torch_geometric.transforms as T
from torch_geometric.data import DataLoader
from torch_geometric.utils import normalized_cut
from torch_geometric.nn import (NNConv, graclus, max_pool, max_pool_x, global_mean_pool)

path = osp.join(osp.dirname(osp.realpath(__file__)), '..', 'data', 'MNIST')

transform = T.Cartesian(cat=False)
train_dataset = MNISTSuperpixels(path, True, transform=transform)
test_dataset = MNISTSuperpixels(path, False, transform=transform)
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=64, shuffle=False)
d = train_dataset

我正在尝试使用 MNISTSuperpixels 数据进行图形卷积,但在使用示例代码时遇到了一些麻烦。 大多数脚本都在使用 path = osp.join(osp.dirname(osp.realpath(__file__)), '..', 'data', 'MNIST') 但是,他们给了我一个错误 NameError: name '__file__' is not defined 而我不明白 osp.realpath(__file__) 的真正含义。

我在 Ubuntu 上使用 Jupyter notebook,我的工作目录是

print(os.getcwd())
/home/hkimlx/GDL/pytorch_geometric/examples

与示例代码mnist_nn_conv.py所在的目录相同。

请帮助我。谢谢!

【问题讨论】:

标签: python pytorch conv-neural-network


【解决方案1】:

根据documentation

__file__ 是加载模块的文件的路径名,如果它是从文件加载的。 __file__ 属性可能丢失 对于某些类型的模块,例如静态的 C 模块 链接到解释器;用于动态加载的扩展模块 来自共享库,它是共享库文件的路径名。

根据answer,您无法以实用的方式获取笔记本的路径。使用 os.getcwd() 作为解决方法。

【讨论】:

  • “从文件加载”是什么意思?根据您的说法,我在使用 jupyter notebook 时无法解决此错误?但是当我使用命令提示符时出现同样的错误。
  • __file__ 是可选的。似乎木星没有在笔记本中设置变量。
【解决方案2】:

在笔记本中,您需要使用双引号“__file__”,如osp.realpath("__file__"),而不是osp.realpath(__file__)

来源:https://queirozf.com/entries/python-working-with-paths-the-filesystem#-nameerror-name-'file'-is-not-defined

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-02
    • 2013-04-09
    • 1970-01-01
    • 2021-01-04
    • 2020-11-07
    • 2017-01-09
    • 2017-06-14
    相关资源
    最近更新 更多