名称 '_C' 未定义 pytorch+jupyter notebook

Posted

技术标签:

【中文标题】名称 \'_C\' 未定义 pytorch+jupyter notebook【英文标题】:name '_C' is not defined pytorch+jupyter notebook名称 '_C' 未定义 pytorch+jupyter notebook 【发布时间】:2019-06-21 20:49:30 【问题描述】:

我有一些使用 pytorch 的代码,在我的 IDE (pycharm) 上运行良好。

为了研究,我尝试从 jupyter notebook 运行它。

笔记本中的代码:

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

在笔记本中运行代码时,我得到

NameError Traceback(最近调用 最后)在 1 从算法导入 Argparser ----> 2 从算法导入会话 3 定义主(): 4 print("主要开始") 5 args = Argparser.parse()

D:\git\stav\stav-rl\algorithms\Session.py 在 12 13 ---> 14 来自算法。剧集导入剧集 15 从算法.Agent 导入Agent 16 进口火炬

D:\git\stav\stav-rl\algorithms\Episode.py 在 1 作者 = '诺姆' 2 ----> 3 进口火炬 4 将 numpy 导入为 np 5 导入cv2

c:\anaconda3\envs\threadartrl\lib\site-packages\torch__init__.py 在 84 来自 torch._C 导入 * 85 ---> 86 all += [目录中名称的名称(C) 87 如果名称 [0] != '' 和 88 not name.endswith('Base')]

NameError:名称“_C”未定义

错误在from algorithms import Session--&gt;...--&gt;import torch

如何让代码运行?

【问题讨论】:

【参考方案1】:

您需要 Cython 才能使 pytorch 工作:

pip3 install Cython

见this comment on the issue on github。

我的理解是site-packages/torch 中有一个名为_C.cpython-37m-x86_64-linux-gnu.so 的库,它提供共享对象_C 并需要Cython。 PyCharm 提供 Cython 支持,而 Jupyter 环境不提供。

【讨论】:

自己找到了,正准备发帖,谢谢!但是为什么这能解决问题呢? 我认为这是因为某些库使用了 Cython。查看更新的答案。【参考方案2】:

重启内核即可解决问题。

【讨论】:

关机再开机...我怎么会忘记?【参考方案3】:

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

我继续前进,made a separate question 假设这是一个不同的问题,但我想我会在这里发帖以防万一。

【讨论】:

以上是关于名称 '_C' 未定义 pytorch+jupyter notebook的主要内容,如果未能解决你的问题,请参考以下文章

NameError:名称“pd”未定义

在Pytorch中安装jupyetr notebook后,输入jupyter notebook命令无法直接跳出浏览界面

我无法在 jupyter 和 Spyder 中安装 pytorch?

在 Jupyter Notebook 中导入期间未找到模块

错误NameError:名称'head'未在jupyter笔记本上定义

在引发 ValidationError 期间“未定义全局名称'_'”