On 03/17/2015 09:51 AM, George Trojan wrote:
On 03/16/2015 11:47 PM, memilanuk wrote:
Might be just you...
monte@machin-shin:~$ python
Python 3.4.3 |Continuum Analytics, Inc.| (default, Mar 6 2015, 12:03:53)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>> tkinter.Tk()
<tkinter.Tk object at 0x7ff4c6fc8160>
>>>
Just for the heck of it I created a new venv (using conda create -n
test) and tried it again. Same thing.
How are you creating your venv?
Monte
Hmm. I tried on the different system (Fedora 20), with Python 3.4.2.
Same results:
dilbert@gtrojan> python
Python 3.4.2 |Continuum Analytics, Inc.| (default, Oct 21 2014, 17:16:37)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>> tkinter.Tk()
<tkinter.Tk object at 0x7f5713951630>
>>>
dilbert@gtrojan> which pyvenv
/usr/local/miniconda3/bin/pyvenv
dilbert@gtrojan> pyvenv --system-site-packages ~/test
dilbert@gtrojan> source ~/test/bin/activate
(test) dilbert@gtrojan> python
Python 3.4.2 |Continuum Analytics, Inc.| (default, Oct 21 2014, 17:16:37)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tkinter
>>> tkinter.Tk()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/miniconda3/lib/python3.4/tkinter/__init__.py", line
1851, in __init__
self.tk = _tkinter.create(screenName, baseName, className,
interactive, wantobjects, useTk, sync, use)
_tkinter.TclError: Can't find a usable init.tcl in the following
directories:
/opt/anaconda1anaconda2anaconda3/lib/tcl8.5
/home/gtrojan/test/lib/tcl8.5 /home/gtrojan/lib/tcl8.5
/home/gtrojan/test/library /home/gtrojan/library
/home/gtrojan/tcl8.5.15/library /home/tcl8.5.15/library
This probably means that Tcl wasn't installed properly.
>>>
I suspect faulty logic: pyvenv does not copy/links the tcl/tk libraries
to the newly created directory. When I run python directly, the second
directory to search is /usr/local/miniconda3/lib/tcl8.5, where conda
puts its tcl version. In virtual environment, the path is replaced and
tkinter fails. So the other fix would be to manually create symlinks
after running pyvenv, or modify Continuum Analytics pyvenv to do that.
There is no issue with pyvenv when Python is built from the source, the
first directory in the path is where tcl is found by configure and that
does not change in virtual environment.
I found another similar bug report here:
https://groups.google.com/a/continuum.io/forum/#!topic/anaconda/Q9xvJT8khTs
Looks this has not been fixed.
Well, it might be worth poking them and seeing if you get any response.
What happens if you create a venv using conda? Is there some particular
reason you're using Anaconda but not using its tools for managing
virtualenvs? I get it that pyenv should work, but it might be useful to
isolate it further to tell if its just pyenv, or something else. I
don't have any experience with pyenv myself, sorry.
HTH,
Monte
--
Shiny! Let's be bad guys.
Reach me @ memilanuk (at) gmail dot com
--
https://mail.python.org/mailman/listinfo/python-list