美文网首页
virtualenv下Tkinter的环境搭建和发布

virtualenv下Tkinter的环境搭建和发布

作者: _Walker__ | 来源:发表于2018-04-11 20:39 被阅读229次

实验环境:

  • Python-3.5.1-amd64
  • 操作系统:Windows 10
  • exe发布工具:cx-Freeze 5.1.1

一、创建虚拟环境

  1. 新建虚拟环境:virtualenv VTrans --always-copy --unzip-setuptools
  2. 复制 tcl 到虚拟环境
    tcl要放到Lib的同级目录下,因为Python默认读取这个位置。
    例:把 D:\SDKs\Python35\tcl\ 复制到 G:\Workspace\Venvs\VTrans\tcl\
    (额外补充一点,我在Win7+Py3.6下测试,tcl会自动复制过去)
  3. 复制 tcl86t.dlltk86t.dll 到虚拟环境
    我是把整个DLLs目录都复制到了Scripts下面。这个的位置没有限制,其实不复制也没关系,开发阶段不需要它。我只是为了保持发布脚本中路径的统一才做了这个处理。
    例:把 D:\SDKs\Python35\DLLs\ 复制到 G:\Workspace\Venvs\VTrans\Scripts\DLLs\

二、编写发布脚本

import sys
import os
from os import path

from cx_Freeze import setup, Executable

exe_path = path.dirname(path.abspath(sys.executable))
cur_path = path.dirname(path.abspath(__file__))

base = None
if sys.platform == 'win32':
    base = 'Win32GUI'
    tcl_path = path.abspath(path.join(exe_path, '..', 'tcl'))
    if not path.isdir(tcl_path):
        tcl_path = path.join(exe_path, 'tcl')
        if not path.isdir(tcl_path):
            print('找不到tcl路径!!')
            tcl_path = False

    if tcl_path:
        os.environ['TCL_LIBRARY'] = path.join(tcl_path, 'tcl8.6')
        os.environ['TK_LIBRARY'] = path.join(tcl_path, 'tk8.6')

setup(name='DTrans',
      version='0.1',
      options={
          'build_exe': dict(
              # 打包需要包含的package
              packages=[
                  'queue', 'idna.idnadata'
              ],
              # 打包需要包含的文件
              include_files=[
                  path.join(exe_path, 'DLLs', 'tcl86t.dll'),
                  path.join(exe_path, 'DLLs', 'tk86t.dll'),
              ],
          )},

      executables=[
          Executable(script='main.py', base=base, targetName='执行.exe')
      ])

发布命令

(VTrans)> python setup.py build

三、杂记

  cx-Freeze并没有帮我们把所有依赖项都打包出去,据网料记载间接依赖cx是识别不出来的,因此就需要我们自己在发布脚本里添加上去,也就是上面packages和include_files里做的工作。
  打包的时候,很难明确哪些东西cx处理了,哪些需要自己添加。解决这个问题,只需遵循“缺啥补啥”原理。

具体操作就是:发布&运行 => 查看报错 => 添加依赖项

相关文章

网友评论

      本文标题:virtualenv下Tkinter的环境搭建和发布

      本文链接:https://www.haomeiwen.com/subject/wsighftx.html