idle glitch while building python 3.4 from sources

Discussion in 'Python' started by Mark H Harris, May 7, 2014.

  1. hi folks, I got bit again trying to build python3.4 from sources (mea
    culpa, of course). The symptom is everything (except ensure pip) builds,
    installs, and runs fine with the small baby problem that IDLE will not
    run (-tkinter isn't even there) even though tcl/tk 8.5 is loaded and
    running.

    This happens to me from time to time when I'm building on a new machine
    (this one is a T-61 ThinkPad running Mint Maya). The solution is simple,
    if I could remember it.

    The dev packages for tcl/tk have to be installed or the python build
    will not self-configure for tkinter. Make sure these are installed
    before ./configure; make; sudo make install :

    tcl8.5-dev
    tk8.5-dev

    That is assuming that the dev packages (as well as tcl/tk) are installed
    to the standard places on my distro (they were). We can point the build
    at another location in setup.py, or with ./configure options, or with
    make options (complicated).

    Why am I posting? Glad you asked. I am wondering if the build scripts
    could be updated slightly by prompting the user for IDLE preferences;
    and|or by being more robust about determining where tcl/tk lives, and|or
    by explicitly telling the user in the logs (or preferably right there
    on-screen) that the dev header packages for tcl/tk are not installed,
    and|or by refusing to build until the tcl/tk dev packages are installed,
    and|or refusing to build unless the user explicitly opts to bypass
    tkinter and build python anyway.

    I know its my own fault (because I should just know this) but I got to
    wondering about others who 'might not know' about the tcl/tk dev
    packages and would be scratching their heads about why _tkinter is
    missing and IDLE won't run, although tcl/tk is installed correctly and
    running?

    Just a suggestion...


    marcus
     
    Mark H Harris, May 7, 2014
    #1
    1. Advertisements

  2. Mark H Harris

    Ned Deily Guest

    If the Python build (the "make sharedmods" build step) can't
    successfully build the _tkinter extension module (because, for example,
    it couldn't find the Tk headers or libraries), the build step already
    reports that it could not build _tkinter. It does the same for all of
    the other extension module builds, some of which also require
    third-party headers and libraries, like those from OpenSSL, zlib, bz2,
    etc. Also, most people don't build Python from source - they install
    Python from a distributor - and the people who do generally know (or
    learn quickly) what dependencies are needed for their needs.
     
    Ned Deily, May 7, 2014
    #2
    1. Advertisements

  3. hi Ned, where is the report? Its not obvious; where does one look for
    this step output? I did not see it on my build attempts last night. I'm
    assuming its in one of the logs. What would be nice is a final (at the
    end) report listing of the modules|extention modules that did not get
    built (for whatever reason).

    As an aside, the ensure pip is disabled for some reason (I'm reading the
    pep, and such, which is confusing). There isn't much to go on from the
    build listing about ensure pip either.


    marcus
     
    Mark H Harris, May 7, 2014
    #3
  4. hi Ned, where is the report? Its not obvious; where does one look for
    this step output? I did not see it on my build attempts last night. I'm
    assuming its in one of the logs. What would be nice is a final (at the
    end) report listing of the modules|extention modules that did not get
    built (for whatever reason).

    As an aside, the ensure pip is disabled for some reason (I'm reading the
    pep, and such, which is confusing). There isn't much to go on from the
    build listing about ensure pip either.


    marcus
     
    Mark H Harris, May 7, 2014
    #4
  5. Mark H Harris

    Ned Deily Guest

    $ sudo aptitude remove tk-dev tcl-dev
    $ make clean
    $ make
    gcc -pthread -c -fno-strict-aliasing -g -O2 -g -O0 -Wall
    -Wstrict-prototypes -I. -IInclude -I./Include -DPy_BUILD_CORE -o
    Modules/python.o ./Modules/python.c
    [...]
    ../python -E -S -m sysconfig --generate-posix-vars
    [20560 refs]
    running build
    running build_ext
    building dbm using gdbm
    INFO: Can't locate Tcl/Tk libs and/or headers
    [...]

    Python build finished, but the necessary bits to build these modules
    were not found:
    _bsddb _tkinter bsddb185
    sunaudiodev
    To find the necessary bits, look in setup.py in detect_modules() for the
    module's name.

    running build_scripts
    $
    What do you mean by "disabled"? Are you building from a source tarball
    or from some package from your distribution? You'll need to do a "make
    install" for pip to be installed and it will be installed in your
    --prefix bin (default, /usr/local/bin) as pip3 and pip3.4.
     
    Ned Deily, May 8, 2014
    #5
  6. Mark H Harris

    Guest

    I just upgraded to Python 3.4.1 AMD64 for Windows 7 using the binaries, and this appears to have affected the Windows binary distribution.

    osmith@WOTSIT /c/Python34/Lib/idlelib
    $ python idle.py
    ** IDLE can't import Tkinter. Your Python may not be configured for Tk. **
     
    , Jun 12, 2014
    #6
  7. Mark H Harris

    Terry Reedy Guest

    Upgraded from what to what with what? Which binaries? Details matter.
    Try idle.bat
     
    Terry Reedy, Jun 13, 2014
    #7
    1. Advertisements

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 (here). After that, you can post your question and our members will help you out.