gpt4 book ai didi

python - 使用 py2exe 时使用 Numpy 创建一个 tcl 文件夹

转载 作者:太空狗 更新时间:2023-10-29 21:31:48 24 4
gpt4 key购买 nike

在我的 Python 程序上使用 py2exe 时,我得到了一个可执行文件,还有一个 tcl\ 文件夹。

这很奇怪,因为我根本不使用 tcl/tk 并且在我的代码中没有任何与 tkinter 相关的内容。

为什么导入numpy负责添加这个tcl\文件夹?如何防止这种情况发生?


测试.py

import numpy

print 'hello'

PY2EXE 代码

from distutils.core import setup
import py2exe

setup(script_args = ['py2exe'], windows=[{'script':'test.py'}], options = {'py2exe': {'compressed':1,'bundle_files': 1}}, zipfile = None)

最佳答案

用于确定依赖关系的

Modulefinder 模块变得“困惑”并认为您需要 Tkinter

如果您运行以下脚本...

from modulefinder import ModuleFinder

finder = ModuleFinder()
finder.run_script('test.py')
print finder.report()

...您将看到找到的模块(缩短):

  Name                      File
---- ----
m BaseHTTPServer C:\Python27\lib\BaseHTTPServer.py
m ConfigParser C:\Python27\lib\ConfigParser.py
m FixTk C:\Python27\lib\lib-tk\FixTk.py
m SocketServer C:\Python27\lib\SocketServer.py
m StringIO C:\Python27\lib\StringIO.py
m Tkconstants C:\Python27\lib\lib-tk\Tkconstants.py
m Tkinter C:\Python27\lib\lib-tk\Tkinter.py
m UserDict C:\Python27\lib\UserDict.py
m _LWPCookieJar C:\Python27\lib\_LWPCookieJar.py
...

所以现在我们知道导入了Tkinter,但是用处不大。该报告没有显示有问题的模块是什么。但是,通过修改 py2exe 脚本来排除 Tkinter 已经足够了:

from distutils.core import setup
import py2exe

setup(script_args = ['py2exe'],
windows=[{'script':'test.py'}],
options = {'py2exe': {'compressed':1,
'bundle_files': 1,
'excludes': ['Tkconstants', 'Tkinter']
},
},
zipfile = None)

通常这就足够了。如果您仍然好奇哪些模块有问题,ModuleFinder 帮不上什么忙。但是你可以安装modulegraph及其依赖altgraph .然后您可以运行以下脚本并将输出重定向到 HTML 文件:

import modulegraph.modulegraph

m = modulegraph.modulegraph.ModuleGraph()
m.run_script("test.py")
m.create_xref()

你会得到依赖图,你会发现:

numpy -> numpy.lib -> numpy.lib.utils -> pydoc -> Tkinter 

关于python - 使用 py2exe 时使用 Numpy 创建一个 tcl 文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21358042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com