一个特别短的ruby/tk代码:

require 'tkextlib\iwidgets'
require 'tkextlib\bwidget'

x = 0
101.times {|i| x+=i}
Tk.messageBox(:type=>:ok,:title=>"win",:message=>"total 100 is #{x}")

但是运行提示出错:

/usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- tkextlib\iwidgets (LoadError)
	from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from 1945.rb:1:in `<main>'

这段代码原来是windows下写的,首先发现路径分隔符在linux需要用/。windows下估计/和\都可以吧?!然后接着运行,原来的错误木有了,新的错误出现鸟:

/usr/lib/ruby/2.1.0/tk/package.rb:86:in `rescue in require': TkPackage can't find package BWidget (RuntimeError)
	from /usr/lib/ruby/2.1.0/tk/package.rb:83:in `require'
	from /usr/lib/ruby/2.1.0/tkextlib/bwidget.rb:16:in `<top (required)>'
	from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from /usr/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
	from 1945.rb:2:in `<main>'

提示找不到BWidget包,遂locate之,发现头文件啥的都是有的啊:

/usr/lib/ruby/2.1.0/tkextlib/bwidget
/usr/lib/ruby/2.1.0/tkextlib/bwidget.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/arrowbutton.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/bitmap.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/button.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/buttonbox.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/combobox.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/dialog.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/dragsite.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/dropsite.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/dynamichelp.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/entry.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/label.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/labelentry.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/labelframe.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/listbox.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/mainframe.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/messagedlg.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/notebook.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/pagesmanager.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/panedwindow.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/panelframe.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/passwddlg.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/progressbar.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/progressdlg.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/scrollableframe.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/scrolledwindow.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/scrollview.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/selectcolor.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/selectfont.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/separator.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/setup.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/spinbox.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/statusbar.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/titleframe.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/tree.rb
/usr/lib/ruby/2.1.0/tkextlib/bwidget/widget.rb
/usr/lib/x86_64-linux-gnu/deja-dup/libwidgets.so
/usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/PrivateWidgets/libwidgetsplugin.so

难道是库文件没有?于是乎用 sudo apt-get install bwidget安装,接着运行,这个世界清净啦:

ruby TkPackage can't find package BWidget 之解决办法的更多相关文章

  1. sublime text 3 无法安装Package Control插件解决办法

    sublime text 3 无法安装Package Control插件解决办法 ***关于sublime text 3 常用的 Package Control插件的安装方法*** 1.CTRL+` ...

  2. 出现No package gcc+ available解决办法

    系统 CentOS Linux release 7.4.1708 (Core)   安装gcc时报错 [root@ip---- node-v10.15.3]# yum -y install gcc+ ...

  3. ubuntu-E:Encountered a section with no Package: header的解决办法 (转)

    E:Encountered a section with no Package: header, E:Problem with MergeList /var/lib/apt/lists/cn.arch ...

  4. ubuntu-E:Encountered a section with no Package: header的解决办法

    刚才打开ubuntu,我的版本是12.04.正想使用sudo apt-get install build-essential 时,出现了如下错误: E:Encountered a section wi ...

  5. Unable to locate package python3 错误解决办法

    错误 huny@DESKTOP-N1EBKQP:/mnt/c/Users/Administrator$ sudo apt-get install python3 Reading package lis ...

  6. Visual Studio 2010 更新NuGet Package Manager出错解决办法

    在Visual Studio 2010的扩展管理器中发现NuGet Package Manger有最新版本更新提示,选择更新安装提示以下错误信息: 2013/4/25 1:11:48 - Micros ...

  7. Flutter 卡在 package get 的解决办法

    今天在尝试使用Flutter 的时候,需要使用一个第三方库 修改了 pubspec 文件之后,AS 像往常一样提示 需要 package get. 之前都挺正常,不知道今天怎么了. 一直处在 Runn ...

  8. yum与apt命令比较,yum安装出现No package vim available解决办法

    yum (Yellowdog Updater Modified)是一个集与查找,安装,更新和删除程序的Linux软件.它运行在RPM包兼容的Linux发行版本上,如:RedHat, Fedora, S ...

  9. yum安装出现No package vim available解决办法

    [root@iZwz96wgquf8g6okusxr0uZ yum.repos.d]# yum install yum-downloadLoaded plugins: fastestmirrorLoa ...

随机推荐

  1. JAVA代码规范笔记(上)

    本文为<code conventions-150003>(JAVA代码规范)笔记. 文件组织 1.超过2000行代码的源文件将会比较难以阅读,应该避免. 2.每个Java源文件都包含单一的 ...

  2. 【java集合框架源码剖析系列】java源码剖析之TreeSet

    本博客将从源码的角度带领大家学习TreeSet相关的知识. 一TreeSet类的定义: public class TreeSet<E> extends AbstractSet<E&g ...

  3. MVPHelper更新日志 --- 新增常规分包模式

    MVPHelper是一款可以自动生成MVP接口以及实现类的android studio插件,彻底解放双手! MVPHelper更新版本啦. 由于之前只支持contract模式,不是很符合大众口味 所以 ...

  4. Activity与Fragment的生命周期详解

    在安卓中Activity与Fragment是非常相似的两个类,它们各自都拥有自己的生命周期,且都可以用来显示布局文件中的视图.其中Activity是通过setContenView()显示视图,而Fra ...

  5. Android的DataBinding原理介绍

    Activity在inflate layout时,通过DataBindingUtil来生成绑定,从代码看,是遍历contentView得到View数组对象,然后通过数据绑定library生成对应的Bi ...

  6. 高通QSD MSM APQ区别

    高通msm是Mobile Station Modem 的缩写,即移动基带工作站,是指带有基带芯片的移动处理器,实际就是基带内置的手机处理器(soc)系列. qsd是qualcomm snapdrago ...

  7. 使用C#+socket实现用移动设备控制的虚拟手柄

    近期在和同学玩死神vs火影,以怀念小时候,突然觉得用键盘玩的不够畅快,因此萌生了写一个虚拟手柄的念头. 我的思路是在移动设备(iOS.Android)上实现手柄,在电脑上监听,利用socket建立持久 ...

  8. UNIX环境高级编程——线程同步之读写锁以及属性

    读写锁和互斥量(互斥锁)很类似,是另一种线程同步机制,但不属于POSIX标准,可以用来同步同一进程中的各个线程.当然如果一个读写锁存放在多个进程共享的某个内存区中,那么还可以用来进行进程间的同步, 互 ...

  9. JAVA 继承基本类、抽象类、接口

    Java是一个面向对象的语言,java面向对象一般有三大特征:封装.继承.多态. 封装:就是把一些属性和方法封装到一个类里. 继承:就如子类继承父类的一些属性和方法. 多态:就如一个父类有多个不同特色 ...

  10. 连接器与容器的桥梁——CoyoteAdapter

    如果把整个tomcat内核最高抽象程度模块化,可以看成是由连接器Connector和容器Container组成,连接器负责HTTP请求接收及响应,生成请求对象及响应对象并交由容器处理,而容器则根据请求 ...