Trying to run python code with TKinter-based widgets from a virtualenv.
user@computer:~/myproject$ env/bin/python Python
2.7.3 (default, Sep 26 2012, 21:51:14) [GCC 4.7.2] on linux2 Type "help", "copyright", "credits" or "license" for more information.
>>> import Tkinter
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 42, in <module>
raise ImportError, str(msg) + ', please install the python-tk package' ImportError: No module named _tkinter, please install the python-tk package
What is the proper way to install TK to the virtualenv?
Set the environment variable TCL_LIBRARY in your activate
script. On Windows (Python 2.7 with Tcl 8.5), just add this line to Scripts\activate.bat
:
set "TCL_LIBRARY=C:\Python27\tcl\tcl8.5"
@Jasper van den Bosch's edit: On Ubuntu, the modification to the script activate
is the following:
TK_LIBRARY=/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/site-packages/PIL:/usr/lib
TKPATH=/usr/lib/python2.7/lib-tk:/usr/lib/python2.7/site-packages/PIL:/usr/lib
TCL_LIBRARY=/usr/lib
export TCL_LIBRARY TK_LIBRARY TKPATH
The reference of this can be found on this question on askubuntu
I manage to integrate tkinter
in python3 to virtualenv by symlink tkinter
folder to virtualenv python3
. I works for me. But I don't know if it's the right way.
sudo apt-get install python3-tk
cd ~/.virtualenvs/cv/lib/python3.4/
ln -s /usr/lib/python3.4/tkinter tkinter
Hope this helps.
In later versions of python, this may result in a
ModuleNotFoundError: No module named '_tkinter'
In this case, ensure to also symlink/usr/lib/python3.x/lib-dynload/_tkinter.cpython-36m-x86_64-linux-gnu.so
as
path/to/virtualenv/lib/python3.x/lib-dynload/_tkinter.cpython-36m-x86_64-linux-gnu.so
using
ln -s /usr/lib/python3.x/lib-dynload/_tkinter.cpython-36m-x86_64-linux-gnu.so _tkinter.cpython-36m-x86_64-linux-gnu.so
from within your virtualenv lib/python3.x/lib-dynload/
directory.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With