名称 '_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-->...-->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的主要内容,如果未能解决你的问题,请参考以下文章
在Pytorch中安装jupyetr notebook后,输入jupyter notebook命令无法直接跳出浏览界面
我无法在 jupyter 和 Spyder 中安装 pytorch?