Python 可嵌入 zip:安装 Tkinter

问题描述 投票:0回答:5

Python 可嵌入 zip 没有 pip 和 Tkinter。
在可嵌入的 zip 中使用 get-pip.py 安装 pip 很容易。

我们如何也安装 Tkinter(假设我们在同一台机器上没有现有的 Python 安装)?

python python-3.x tkinter tcl tk-toolkit
5个回答
31
投票
假设您使用的是 Windows,并且还安装了常规 Python 发行版(与嵌入式发行版相同版本),要在嵌入式发行版中安装 Tkinter,您可以从常规 Python 发行版复制以下文件:

  • tcl
    文件夹到
    embedded_distribution_folder\
    (嵌入式发行版的根文件夹)
  • tkinter
    文件夹(位于
    Lib
    下)到
    embedded_distribution_folder\Lib
    embedded_distribution_folder\
    
    
  • 文件
  • _tkinter.pyd
     
    tcl86t.dll
     
    tk86t.dll
     
    zlib1.dll
    (对于 python >= 3.12,位于 
    DLLs
    zlib1.dll
     下)到 
    embedded_distribution_folder\DLLs
     或到 
    embedded_distribution_folder\
    
    

1
投票
添加@lucatrv答案和@TeaHoney评论,可以将文件夹添加到代码的路径中。这是一个通用代码,适用于 python 目录的以下树结构

    DLL
  • tcl
  • python.exe
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))
    

0
投票
使用 windows python 设置安装程序 来自 python.org。然后仅在自定义目录中自定义安装 tkinter。如果您打算制作一个可部署的应用程序。确保设置环境变量复选框变量已禁用


0
投票
强调这个问题不仅是关于embeddable=portable python,而且还关于portable环境,这可能是正确的?

在尝试嵌入分发并在添加 Tkinter 和其他包时遇到一些困难之后,我发现了两种可以考虑的替代方案:

    使用 shell 自动化在目标系统上安装所有内容(发行版大小
  1. <1MB)
  2. 从标准 python 创建可移植版本,只需将绝对路径替换为相对路径(分布大小 >> 100MB)
如果您在 Windows 上分发且全部开源,这里有

PowerShell 实验,它可以解决 1 和 2 种情况。这个问题没有指定确切的目标,在我的例子中,目标之一是使 python 脚本可供无法安装 python 环境的新手用户使用,另一个目标是为虚拟机进行轻松的可移植部署。


0
投票
对 @lucatrv for python3.11 embeddable 的答案进行了一些修复。

    python311 可能使用
  • ./Lib/site-packages/ 但不仅仅是 ./Lib/,请注意安装包的文件夹
  • 如果没有
  • DLLs文件夹,请将DLLs中的文件放入python 311的根文件夹中
  • tcl可以粘贴到根目录,而tkinter需要粘贴到你的packages文件夹中
  • 测试时,如果 tkinter 已加载但“失败”,请考虑
  • DLLs 的位置
© www.soinside.com 2019 - 2024. All rights reserved.