LoadError: no such file to load -- tk

R

Rich Leblanc

I'm trying to install Ruby on a 64 bit Windows 7 machine following this
guide;

http://www.tkdocs.com/tutorial/install.html#installwin

After setting the environment variables and compiling I get this error:
irb(main):001:0> require 'tk'
LoadError: no such file to load -- tk
from (irb):1:in `require'
from (irb):1
from :0


I've googled for an answer but only find lot's of other people with the
same problem but no answer. Any ideas why it doesn't work or how to fix
it?
 
E

Eric Christopherson

Yes I know, but why not? Neither of those links was helpful.

How did you install Ruby? Using RubyInstaller? That doesn't include Tk
(because, as I understand it, it's currently impossible to
automatically build and package Tk along with it).

Assuming you installed Tk, you can compile a gem called tk_as_gem that
will work with your existing Tk installation. You'll need the Ruby
development kit (MSys tools, available from http://rubyinstaller.org/)
to compile it.
 
R

Rich Leblanc

Eric said:
How did you install Ruby? Using RubyInstaller? That doesn't include Tk
(because, as I understand it, it's currently impossible to
automatically build and package Tk along with it).

Assuming you installed Tk, you can compile a gem called tk_as_gem that
will work with your existing Tk installation. You'll need the Ruby
development kit (MSys tools, available from http://rubyinstaller.org/)
to compile it.

Like the first post says;

I'm trying to install Ruby on a 64 bit Windows 7 machine following this
guide;

http://www.tkdocs.com/tutorial/install.html#installwin


I installed ActiveState ActiveTCL which includes tk. I can run wish85
successfully. Tcl/tk is installed.

Like the first post says, after setting environment variables and
compiling according to the instructions it doesn't work. And by that I
mean that when I run require 'tk' from the irb it gives the error
message;

LoadError: no such file to load -- tk
 
R

Rich Leblanc

Rich said:
Like the first post says;

I'm trying to install Ruby on a 64 bit Windows 7 machine following this
guide;

http://www.tkdocs.com/tutorial/install.html#installwin


I installed ActiveState ActiveTCL which includes tk. I can run wish85
successfully. Tcl/tk is installed.

Like the first post says, after setting environment variables and
compiling according to the instructions it doesn't work. And by that I
mean that when I run require 'tk' from the irb it gives the error
message;

LoadError: no such file to load -- tk

I'm not using rubyinstaller. I'm compiling from source.


I don't understand what any of that means or why I'd want to do it. I'm
just a newb trying to learn ruby but can't get it to install with tk
following that tutorial.
 
R

Roger Pack

LoadError: no such file to load -- tk

This means that your Ruby runtime, when you built it, was unable to find
your Tk libs/headers, so didn't build your Tk installation.

Your only hope after that point is to somehow make them accessible (in
your case, by building Tcl/Tk using the same compiler you used to build
ruby, then installing tk_as_gem).

recommendation: use rubyinstaller, then research the links I gave you,
which point eventually to either using tk_as_gem+devkit or this helper.

Also ffi-tk might fit the bill.

The rubyinstaller guys hope to make it easier to get to tk in the
future.
-r
 
R

Rich Leblanc

Roger said:
This means that your Ruby runtime, when you built it, was unable to find
your Tk libs/headers, so didn't build your Tk installation.

Yes I got that much. But I don't understand why. I followed that guide
step by step but it didn't work.

Your only hope after that point is to somehow make them accessible (in
your case, by building Tcl/Tk using the same compiler you used to build
ruby, then installing tk_as_gem).

My only hope? What about figuring out why it didn't work, fix the
problem and try again? That tutorial obviously works for some people.

recommendation: use rubyinstaller, then research the links I gave you,
which point eventually to either using tk_as_gem+devkit or this helper.

The tutorial says do not use the installer. I'd like to get one thing
working before moving on to something else I don't understand. I didn't
find anything helpful in those links. If you'd like to link the specific
page that points to the answer to my problem I'd be happy to read it.
 
R

Roger Pack

Rich said:
Yes I got that much. But I don't understand why. I followed that guide
step by step but it didn't work.

1.9.1 didn't build the Tk extension all that well on windows. It should
be fixed with 1.9.2...or there may be some other bug since I only use
mingw not VC to compile it.

To reproduce it go into your ext/tk library and run extconf.rb (and
nmake I guess). It should fail.
My only hope? What about figuring out why it didn't work, fix the
problem and try again?

Please do.
The tutorial says do not use the installer. I'd like to get one thing
working before moving on to something else I don't understand. I didn't
find anything helpful in those links. If you'd like to link the specific
page that points to the answer to my problem I'd be happy to read it.

The tutorial contains instructions on how to build it from source...

Do you have any response to this (it's a gem)?

Anyway, to make it easier I packaged up one for you.
I downloaded 1.9.1p429 from http://rubyinstaller.org/downloads/
then downloaded "â—¦Ruby/Tk environment" from from
http://www.ruby-forum.com/topic/210186#new
and unpackaged it to the appropriate directory.

http://faithpromotingrumors.org/incoming/ruby-1.9.1-p429-i386-mingw32.7z

GL.
-r
 
R

Rich Leblanc

Roger said:
1.9.1 didn't build the Tk extension all that well on windows. It should
be fixed with 1.9.2...or there may be some other bug since I only use
mingw not VC to compile it.

The tutorial says use 1.8.x not 1.9.x.

To reproduce it go into your ext/tk library and run extconf.rb (and
nmake I guess). It should fail.

Reproduce what? I don't understand.
Please do.


I'm trying. That's why I'm here. It seems that tk library is not in the
right place when compiling. Is that it? Then where should it be so I can
check and see if it's there?


The tutorial contains instructions on how to build it from source...

Uh, ya.
Do you have any response to this (it's a gem)?

I don't know what that is or what a gem is. I'm a newb at the beginning
trying to follow a tutorial. I know very little about ruby.

Anyway, to make it easier I packaged up one for you.
I downloaded 1.9.1p429 from http://rubyinstaller.org/downloads/
then downloaded "â—¦Ruby/Tk environment" from from
http://www.ruby-forum.com/topic/210186#new
and unpackaged it to the appropriate directory.

http://faithpromotingrumors.org/incoming/ruby-1.9.1-p429-i386-mingw32.7z

GL.
-r

don't know what any of that means.
 
H

Hidetoshi NAGAI

From: Rich Leblanc <[email protected]>
Subject: Re: LoadError: no such file to load -- tk
Date: Wed, 21 Jul 2010 03:50:10 +0900
Message-ID: said:
Reproduce what? I don't understand.

ext/tk/extconf.rb creates Makefile for tcltklilb.so (core library of
Ruby/Tk), when it finds Tcl/Tk libraries (see ext/tk/README.tcltklib).
If it fails to find proper Tcl/Tk libraries, it creates a dummy
Makefile (it can make nothing). So, before retrying to configure
(run ext/tk/extconf.rb), please remove such dummy Makefile.

If ext/tk/extconf.rb cannot create an available Makefile although you
give the paths of Tcl/Tk libraries, please check consistency of
architecture between Ruby and Tcl/Tk.
When 32bit <=> 64bit or 64bit <=> 32bit, probably ext/tk/extconf.rb
doesn't select the Tcl/Tk libraries to make tcltklib.so.
 
R

Roger Pack

The tutorial says use 1.8.x not 1.9.x.

If you're interested in a 1.8.x that works with tk, see
http://rubyinstaller.org/downloads/
"Ruby 1.8.6-p27 (RC2)"

Install that, and activeState 8.5 in your path and it should "just work"
Reproduce what? I don't understand.

Reproduce ruby not "finding" Tk to compile it in.
I'm trying. That's why I'm here. It seems that tk library is not in the
right place when compiling. Is that it?

I think so.
Then where should it be so I can
check and see if it's there?

I'm not sure I've never built it using mswin.

If you want to build it with mingw checkout the tcl branch of
rubyinstaller:
http://github.com/oneclick/rubyinstaller/tree/tcl


if you run a rake from there
(rake ruby18)
it should build ruby with the tk extension built.

Typically when you're just starting ruby on windows, it's recommended to
use a pre-built package instead of building it yourself.

gem is ruby's way of distributing libraries easily. google for rubygems.
Cheers!
-rp

If you unpack that zip file (download 7 zip to be able to extract it),
you'll get a full fledged ruby 1.9.1 with the Tk extension already
built.
 
R

Rich Leblanc

Hidetoshi said:
From: Rich Leblanc <[email protected]>
Subject: Re: LoadError: no such file to load -- tk
Date: Wed, 21 Jul 2010 03:50:10 +0900


ext/tk/extconf.rb creates Makefile for tcltklilb.so (core library of
Ruby/Tk), when it finds Tcl/Tk libraries (see ext/tk/README.tcltklib).
If it fails to find proper Tcl/Tk libraries, it creates a dummy
Makefile (it can make nothing). So, before retrying to configure
(run ext/tk/extconf.rb), please remove such dummy Makefile.

By dummy Makefile do you mean an empty one? There is a Makefile but
there is stuff in it. I deleted it and tried to recompile but now having
problems with the Microsoft tools this tutorial wants me to use.

If ext/tk/extconf.rb cannot create an available Makefile although you
give the paths of Tcl/Tk libraries, please check consistency of
architecture between Ruby and Tcl/Tk.
When 32bit <=> 64bit or 64bit <=> 32bit, probably ext/tk/extconf.rb
doesn't select the Tcl/Tk libraries to make tcltklib.so.

This is getting more and more confusing. How do I check check
consistency of architecture between Ruby and Tcl/Tk if it's 32 bit or
64? I thought 32 bit apps can run on a 64 bit machine. This tutorial is
really awful. It gives me nothing but problems every step of the way. Is
there some better way to learn Ruby/tk? And why does he want me to use
1.8.x and not 1.9.x?
 
R

Roger Pack

This is getting more and more confusing. How do I check check
consistency of architecture between Ruby and Tcl/Tk if it's 32 bit or
64? I thought 32 bit apps can run on a 64 bit machine. This tutorial is
really awful. It gives me nothing but problems every step of the way. Is
there some better way to learn Ruby/tk? And why does he want me to use
1.8.x and not 1.9.x?

You can use either one.
You probably can only mix 32 bit ruby with 32 bit Tcl/Tk distro.

Re: easier
did you see my comment about ""Ruby 1.8.6-p27 (RC2)""
or about a zip file that contains tk?

Re: learning it:
http://en.wikibooks.org/wiki/Ruby_Programming/GUI_Toolkit_Modules/Tk
may be of some use to you.
GL!
-r
 
R

Rich Leblanc

Roger said:
You can use either one.
You probably can only mix 32 bit ruby with 32 bit Tcl/Tk distro.

Re: easier
did you see my comment about ""Ruby 1.8.6-p27 (RC2)""

What comment? I've read everything in this thread. You mean the one that
says; "If you're interested in a 1.8.x that works with tk, see
http://rubyinstaller.org/downloads/"

I don't really want to use 1.8.x, that stupid tutorial told me to. Of
course I'd like to use the latest and greatest which is probably 1.9.x.

or about a zip file that contains tk?

You mean this one you made?
http://faithpromotingrumors.org/incoming/ruby-1.9.1-p429-i386-mingw32.7z

I'm installing 7 zip now to try it. I didn't want to use 1.9.x because
that tutorial told me to specifically compile the 1.8.x source but since
that tutorial was a total disaster I'm looking at using your 1.9.x and
that new tutorial below. The tutorial is nice but doesn't say how to
install ruby. Just about programming in the language. I need to get it
installed first and that is the hard part. You can compile from source
or use a "one click install" on windows. I'd rather compile from source
but can't get it to work. I also have a FreeBSD Unix machine that I can
use too but don't see any other tutorials about how to install ruby/tk
on that. I have no idea how to do it on Unix so I'm trying on windows
first. Actually, I did install ruby and Tcl/tk on my Unix box but
getting the same error. I need to know where to put the libraries and
how to get it to work.
 
R

Rich Leblanc

Rich said:
The tutorial says use 1.8.x not 1.9.x.



Reproduce what? I don't understand.



I'm trying. That's why I'm here. It seems that tk library is not in the
right place when compiling. Is that it? Then where should it be so I can
check and see if it's there?




Uh, ya.


I don't know what that is or what a gem is. I'm a newb at the beginning
trying to follow a tutorial. I know very little about ruby.



don't know what any of that means.

Ok I've unzipped this thing now how do I install it? And what would I do
if you didn't make me this? I'd really like to get the original problem
fixed and figure out how to get the 1.8.x source compiled and working as
in that tutorial. I'd like to know how to get the proper files in the
right place and understand what I'm doing not "click one button and have
it magically work".

I don't want to start getting sidetracked. How can I build the 1.8.x
source properly with tk and avoid this error? That was my original
question. I also need to get this working on my Unix machine next (or in
parallel). As far as I know there is no "one-click installer" for that.
I need to know what goes where. Aren't there any install instructions
anywhere?
 
H

Hidetoshi NAGAI

From: Rich Leblanc <[email protected]>
Subject: Re: LoadError: no such file to load -- tk
Date: Wed, 21 Jul 2010 11:16:27 +0900
Message-ID: said:
This is getting more and more confusing. How do I check check
consistency of architecture between Ruby and Tcl/Tk if it's 32 bit or
64? I thought 32 bit apps can run on a 64 bit machine. This tutorial is

# Because I'm not familiar with development on Windows, the following
# may be wrong.

On Ruby/Tk, Ruby links tcltklib.so and links dynamic link librariies
of Tcl/Tk. If Ruby's core is a 32bit binary and Tcl/Tk DLLs are 64bit
binaries, Ruby cannot link Tcl/Tk DLLs.
It's not about OS, but consistency between an executable and DLLs.

Which version of ActiveTcl did you download?
If its platform is "Windows (x86)", it is 32bit version of Tcl/Tk.
But if you download "Windows (64-bit, x64)", then 64bit.

How does "ruby.exe -v" describe?
If it includes "x86-mswin32", then it is a 32bit executable.
Else if includes "x64-mswin64", then a 64bit.

If your Tcl/Tk is 64bit and your compiler can make 64bit binaries,
please try "--target=x64-mswin64" configure option.
If your compiler can make 32bit binaries only, please download and
install a 32bit version of ActiveTcl.
 
R

Rich Leblanc

Actually I would like to get this fixed on my Unix machine too. I'm
getting this same error. I have tcl8.5.8 installed and Ruby 1.8.7. How
can I get it to work on Unix? Maybe if I get that working I'll
understand what I'm supposed to do on Windows.
 
M

Michael Fellinger

Ok I've unzipped this thing now how do I install it? And what would I do
if you didn't make me this? I'd really like to get the original problem
fixed and figure out how to get the 1.8.x source compiled and working as
in that tutorial. I'd like to know how to get the proper files in the
right place and understand what I'm doing not "click one button and have
it magically work".

I don't want to start getting sidetracked. How can I build the 1.8.x
source properly with tk and avoid this error? That was my original
question. I also need to get this working on my Unix machine next (or in
parallel). As far as I know there is no "one-click installer" for that.
I need to know what goes where. Aren't there any install instructions
anywhere?

gem install ffi-tk

That should work on any platform, be it 64bit, 32bit, windows, linux,
MRI, or JRuby.

The issue is that all existing tutorials are written with ruby-tk in
mind, some of the API is different.

--=20
Michael Fellinger
CTO, The Rubyists, LLC
 
H

Hidetoshi NAGAI

From: Rich Leblanc <[email protected]>
Subject: Re: LoadError: no such file to load -- tk
Date: Wed, 21 Jul 2010 15:03:41 +0900
Message-ID: said:
Actually I would like to get this fixed on my Unix machine too. I'm
getting this same error. I have tcl8.5.8 installed and Ruby 1.8.7. How
can I get it to work on Unix? Maybe if I get that working I'll

Please tell me the directories of your Tcl/Tk headers/libraries, and
configure options which you gave at first step of compiling.
Probably, ext/tk/extconf.rb outputs some messages about searching and
testing Tcl/Tk libraries (and {tcl,tk}Config.sh) during make steps.
Please tell me the messages, too.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,048
Latest member
verona

Latest Threads

Top