2

I'm using Eclipse with PyDev plugin configured for PyPy interpretator (2.7 python). I'm unable to include Tkinter to my projects. Error, that I was getting in Eclipse is below:

File "C:\PyPy\lib-python\2.7\lib-tk\Tkinter.py", line 39, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
ImportError: No module named _tkinter

I tried to use easy_install to install tkinter but it failed with the reference to the vcvarsall.bat file (I have VS 2010 installed on my computer)

I tried to apply the solution from this post python - How do I point easy_install to vcvarsall.bat I installed MinGW with GCC (C++) compiler. Exported DLL but still unable to compile... My tkinter compilation failing with the following error:

src/_tkinter.c:74:17: fatal error: tcl.h: No such file or directory compilation terminated.

error: Setup script exited with error: command 'gcc' failed with exit status 1

I installed ActiveTcl Community Edition to Tcl folder which contains all the needed files...

Is there a way to 'point' gcc to ActiveTcl in order to finish the compilation?

Community
  • 1
  • 1
Timka
  • 1,769
  • 1
  • 20
  • 27

2 Answers2

1

I've gotten tkinter to compile on Windows (tested on Windows 8 64-bit, but I believe it will work on Windows 7 as well).

Here are the steps that I took:

Install Microsoft Visual Studio C++ 2008 SP1 Express Edition

**KS: Available here: http://go.microsoft.com/?linkid=7729279

Install TclTk 8.5 (ActiveTcl Community Edition 8.5.13)

**KS: Make sure to install the 32-bit version if you've installed pypy 32-bit.

Unpack pypy-c-jit-latest-win32 (or one of the 2.0 betas)

Download http://python-distribute.org/distribute_setup.py

Run pypy.exe distribute_setup.py

Download and unpack https://bitbucket.org/pypy/tkinter/get/default.zip

Modify pypy-tkinter/setup.py as follows:

Replace "c:/tcl" with the install location used for ActiveTcl and "c:/pypy-c-jit-latest-win32" with the install location for pypy

Change libraries to use their Windows file names and also reference the "python27" library included with pypy: (my entries are shown below)

library_dirs=["c:/tcl/lib", "c:/pypy-c-jit-latest-win32/include"]
include_dirs=["c:/tcl/include", "c:/pypy-c-jit-latest-win32/include"]
libraries=["tk85", "tcl85", "python27"]

Run pypy.exe setup.py install from the pypy-tkinter directory. It should compile and install site-packages\tkinter_pypy-0.1-py2.7-win32.egg.

NB: I also copied the 'tcl' folder from my Python 2.7.3 (CPython) install into the folder containing the pypy.exe executable.

I just ran the lib-tk\test\runtktests.py on my pypy install, with the following results:

testLoadTk (test_tkinter.test_loadtk.TkLoadTest) ... skipped 'No $DISPLAY set.'
testLoadTkFailure (test_tkinter.test_loadtk.TkLoadTest) ... ok
test_search (test_tkinter.test_text.TextTest) ... ok
test_horizontal_range (test_ttk.test_extensions.LabeledScaleTest) ... ok
test_initialization (test_ttk.test_extensions.LabeledScaleTest) ... ok
test_resize (test_ttk.test_extensions.LabeledScaleTest) ... ok
test_variable_change (test_ttk.test_extensions.LabeledScaleTest) ... ok
test_widget_destroy (test_ttk.test_extensions.LabeledScaleTest) ... FAIL
test_initialization (test_ttk.test_extensions.OptionMenuTest) ... ok
test_menu (test_ttk.test_extensions.OptionMenuTest) ... ok
test_widget_destroy (test_ttk.test_extensions.OptionMenuTest) ... FAIL
test_convert_stringval (test_ttk.test_functions.InternalFunctionsTest) ... ok
test_dict_from_tcltuple (test_ttk.test_functions.InternalFunctionsTest) ... ok
test_format_elemcreate (test_ttk.test_functions.InternalFunctionsTest) ... ok
test_format_layoutlist (test_ttk.test_functions.InternalFunctionsTest) ... ok
test_format_mapdict (test_ttk.test_functions.InternalFunctionsTest) ... ok
test_format_optdict (test_ttk.test_functions.InternalFunctionsTest) ... ok
test_list_from_layouttuple (test_ttk.test_functions.InternalFunctionsTest) ... ok
test_list_from_statespec (test_ttk.test_functions.InternalFunctionsTest) ... ok
test_script_from_settings (test_ttk.test_functions.InternalFunctionsTest) ... ok
test_val_or_dict (test_ttk.test_functions.InternalFunctionsTest) ... ok
test_multivalues (test_ttk.test_functions.TclObjsToPyTest) ... ok
test_nosplit (test_ttk.test_functions.TclObjsToPyTest) ... ok
test_unicode (test_ttk.test_functions.TclObjsToPyTest) ... ok
test_configure (test_ttk.test_style.StyleTest) ... ok
test_layout (test_ttk.test_style.StyleTest) ... ok
test_lookup (test_ttk.test_style.StyleTest) ... ok
test_map (test_ttk.test_style.StyleTest) ... ok
test_theme_use (test_ttk.test_style.StyleTest) ... ok
test_identify (test_ttk.test_widgets.WidgetTest) ... ok
test_widget_state (test_ttk.test_widgets.WidgetTest) ... ok
test_invoke (test_ttk.test_widgets.ButtonTest) ... ok
test_invoke (test_ttk.test_widgets.CheckbuttonTest) ... ok
test_invoke (test_ttk.test_widgets.RadiobuttonTest) ... ok
test_postcommand (test_ttk.test_widgets.ComboboxTest) ... ok
test_values (test_ttk.test_widgets.ComboboxTest) ... ok
test_virtual_event (test_ttk.test_widgets.ComboboxTest) ... ok
test_bbox (test_ttk.test_widgets.EntryTest) ... ok
test_identify (test_ttk.test_widgets.EntryTest) ... ok
test_revalidation (test_ttk.test_widgets.EntryTest) ... ok
test_validation (test_ttk.test_widgets.EntryTest) ... ok
test_validation_options (test_ttk.test_widgets.EntryTest) ... ok
test_add (test_ttk.test_widgets.PanedwindowTest) ... ok
test_forget (test_ttk.test_widgets.PanedwindowTest) ... ok
test_insert (test_ttk.test_widgets.PanedwindowTest) ... ok
test_pane (test_ttk.test_widgets.PanedwindowTest) ... ok
test_sashpos (test_ttk.test_widgets.PanedwindowTest) ... ok
test_custom_event (test_ttk.test_widgets.ScaleTest) ... ok
test_get (test_ttk.test_widgets.ScaleTest) ... ok
test_set (test_ttk.test_widgets.ScaleTest) ... FAIL
test_add_and_hidden (test_ttk.test_widgets.NotebookTest) ... ok
test_forget (test_ttk.test_widgets.NotebookTest) ... ok
test_index (test_ttk.test_widgets.NotebookTest) ... ok
test_insert (test_ttk.test_widgets.NotebookTest) ... ok
test_select (test_ttk.test_widgets.NotebookTest) ... ok
test_tab (test_ttk.test_widgets.NotebookTest) ... ok
test_tab_identifiers (test_ttk.test_widgets.NotebookTest) ... ok
test_tabs (test_ttk.test_widgets.NotebookTest) ... ok
test_traversal (test_ttk.test_widgets.NotebookTest) ... ok
test_bbox (test_ttk.test_widgets.TreeviewTest) ... ok
test_children (test_ttk.test_widgets.TreeviewTest) ... ok
test_column (test_ttk.test_widgets.TreeviewTest) ... ok
test_delete (test_ttk.test_widgets.TreeviewTest) ... ok
test_detach_reattach (test_ttk.test_widgets.TreeviewTest) ... ok
test_exists (test_ttk.test_widgets.TreeviewTest) ... ok
test_focus (test_ttk.test_widgets.TreeviewTest) ... ok
test_heading (test_ttk.test_widgets.TreeviewTest) ... ok
test_heading_callback (test_ttk.test_widgets.TreeviewTest) ... skipped 'skipping pending resolution of Issue #10734'
test_index (test_ttk.test_widgets.TreeviewTest) ... ok
test_insert_item (test_ttk.test_widgets.TreeviewTest) ... ok
test_set (test_ttk.test_widgets.TreeviewTest) ... ok
test_tag_bind (test_ttk.test_widgets.TreeviewTest) ... ok
test_tag_configure (test_ttk.test_widgets.TreeviewTest) ... ok

======================================================================
FAIL: test_widget_destroy (test_ttk.test_extensions.LabeledScaleTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\pypy-c-jit-latest-win32\lib-python\2.7\lib-tk\test\test_ttk\test_extensions.py", line 25, in test_widget_destroy
    self.assertRaises(Tkinter.TclError, x.tk.globalgetvar, var)
AssertionError: TclError not raised

======================================================================
FAIL: test_widget_destroy (test_ttk.test_extensions.OptionMenuTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\pypy-c-jit-latest-win32\lib-python\2.7\lib-tk\test\test_ttk\test_extensions.py", line 202, in test_widget_destroy
    self.assertRaises(Tkinter.TclError, optmenu.tk.globalgetvar, name)
AssertionError: TclError not raised

======================================================================
FAIL: test_set (test_ttk.test_widgets.ScaleTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\pypy-c-jit-latest-win32\lib-python\2.7\lib-tk\test\test_ttk\test_widgets.py", line 522, in test_set
    self.assertEqual(self.scale.get(), max + 10)
AssertionError: 6.0 != 11.0

----------------------------------------------------------------------
Ran 73 tests in 2.214s
Roehnan
  • 11
  • 2
0

tkinter is not shipped with pypy itself, there is a package to make it work on pypi

http://pypi.python.org/pypi/tkinter-pypy/

  • Thanks for your reply! I'm unable to compile the tkinter-pypy module using MinGW with the above error message regarding missing tcl.h header file – Timka Oct 22 '12 at 17:24
  • i think you neet a tcl/tk development environment to compile it –  Oct 23 '12 at 19:45
  • can't make it work properly...gave up, I'm using tkinter in my regular Python now – Timka Oct 30 '12 at 20:34