Python embeddable zip comes without pip and Tkinter.
It is easy to install pip with get-pip.py in the embeddable zip.
How can we install Tkinter too (assuming we do not have an existing Python installation in the same machine)?
Python embeddable zip comes without pip and Tkinter.
It is easy to install pip with get-pip.py in the embeddable zip.
How can we install Tkinter too (assuming we do not have an existing Python installation in the same machine)?
Assuming you are on Windows and you also have a regular Python distribution installed (same version of the embedded distribution), to install Tkinter in the embedded distribution you can copy the following files from the regular Python distribution:
tcl
folder to embedded_distribution_folder\
(root folder of the embedded distribution)tkinter
folder (which is under Lib
) either to embedded_distribution_folder\Lib
or to embedded_distribution_folder\
_tkinter.pyd
tcl86t.dll
tk86t.dll
(which are under DLLs
) either to embedded_distribution_folder\DLLs
or to embedded_distribution_folder\
Adding to @lucatrv answer and @TeaHoney comment, it is possible to add the folders to the path from the code. Here is a general code that should work for the following tree structure for the python directory
import sys
from pathlib import Path
python_path = Path(sys.exec_prefix)
dlls_path = Path(python_path, "DLLs")
tcl_path = Path(python_path, "tcl")
sys.path.insert(0, str(dlls_path))
sys.path.insert(0, str(tcl_path))
Use the windows python set up installer From python.org. Then custom install tkinter only in a custom directory. If you are planning to make a deployable application. Make sure the set environment variables checkbox variable is disabled
It's probably correct to emphasize that this question is not only about embeddable=portable python, but also about portable environment?
After trying embeddable for distribution and having some difficulties adding Tkinter and other packages, I've found two alternatives to be considered:
If you distribute on Windows and all open-source, here is PowerShell experiment which solves both 1 and 2 cases. Exact goals were not specified in this question, in my case one of goals was to make python script to be available to novice users who can't install python environment, and another goal was to make easy portable deploy for VM's.
Some fix to the answer of @lucatrv for python3.11 embeddable.