名称“_C”未定义 PyTorch + Jupyter Notebook

12

我有一些使用pytorch的代码,在我的IDE(pycharm)中可以正常运行。

为了研究,我尝试从jupyter笔记本中运行它。

在笔记本中的代码:

from algorithms import Argparser
from algorithms import Session
def main():
    print("main started")
    args = Argparser.parse()
    session = Session(args)
    session.run()

这个包看起来像:

|-algorithms
|---__init__.py
|---Argparser.py
|---Session.py
|---<many more files that are being used by Session>.py

其中一些文件中使用了import torch

在notebook中运行代码时,我遇到了以下错误:

NameError Traceback (most recent call last) in 1 from algorithms import Argparser ----> 2 from algorithms import Session 3 def main(): 4 print("main started") 5 args = Argparser.parse()

D:\git\stav\stav-rl\algorithms\Session.py in 12 13 ---> 14 from algorithms.Episode import Episode 15 from algorithms.Agent import Agent 16 import torch

D:\git\stav\stav-rl\algorithms\Episode.py in 1 author = 'Noam' 2 ----> 3 import torch 4 import numpy as np 5 import cv2

c:\anaconda3\envs\threadartrl\lib\site-packages\torch__init__.py in 84 from torch._C import * 85 ---> 86 all += [name for name in dir(C) 87 if name[0] != '' and 88 not name.endswith('Base')]

NameError: name '_C' is not defined

错误出现在from algorithms import Session-->...-->import torch

如何让代码运行起来呢?

6个回答

32

重新启动内核可以解决问题。


4
关掉它再打开...我怎么会忘了呢? - Matt
3
这对我不起作用。 - Adrian Keister
@AdrianKeister 试试Jacques Gaudin的解决方案,然后重新启动。 - undefined

14

您需要安装Cython才能使用PyTorch:

pip3 install Cython

请参考 这个 github 上的评论
我的理解是,在 site-packages/torch 目录下有一个名为 _C.cpython-37m-x86_64-linux-gnu.so 的库,它提供了共享对象 _C 并需要使用 Cython。PyCharm 支持 Cython,而 Jupyter 环境不支持。

2
刚刚我自己找到了答案,正要发布,谢谢!但是为什么这样解决问题呢? - Gulzar
我认为这是因为某个库使用了Cython。请查看更新后的答案。 - Jacques Gaudin
1
谢谢,这些错误信息没有帮助!另外,就像@Sankha Jayalath所说的那样,在重启内核之后。 - undefined

1

我没有使用笔记本电脑,所以也许这是一个不同的问题,但我最近在升级系统 libffi 后遇到了相同的错误。我能够通过安装 libffi7 来解决这个问题。

我假设这是一个不同的问题并提出了一个单独的问题,但考虑到这里,我也想贴一下。


0
你可能在代码的某一行中断了程序。
import torch 

重新启动运行时可以解决这个问题。如果由于某种原因您不想重新启动内核,请尝试重新安装和导入PyTorch。

0
在我的情况下(Google Colab),我重新启动了运行时,然后它就正常工作了。
运行时 > 重新启动运行时

0
在运行了pip3 install Cython之后,我仍然遇到了这个错误,
但是我回想起了第一个错误的提示:ModuleNotFoundError: No module named 'sympy',
所以我尝试了这个: pip3 install sympy,它成功了!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接