py2app-找不到模块(有条件导入)

时间:2019-12-29 12:27:27

标签: python tkinter py2app

我目前正在与Tkinter进行个人项目,我想将所有内容打包到macOS应用中。

不幸的是,用于创建生产版本的命令无法正常工作,而且我始终会遇到与“找不到模块”相关的错误

Modules not found (conditional imports):
 * ConfigParser (dogpile.util.compat)
 * Cookie (requests.compat)
 * OpenSSL.crypto (urllib3.contrib.pyopenssl)
 * Queue (urllib3.util.queue)
 * StringIO (dogpile.util.compat, pkg_resources._vendor.six, requests.compat, six, urllib3.packages.six)
 * backports.functools_lru_cache (soupsieve.util)
 * cPickle (dogpile.util.compat)
 * colors (tkmacosx.variables)
 * com (pkg_resources._vendor.appdirs)
 * com.sun.jna (pkg_resources._vendor.appdirs)
 * com.sun.jna.platform (pkg_resources._vendor.appdirs)
 * cookielib (requests.compat)
 * copy_reg (soupsieve.util)
 * cryptography.x509.extensions (urllib3.contrib.pyopenssl)
 * regex (rebulk.remodule)
 * sympy (subliminal.score)
 * thread (dogpile.util.compat)
 * urllib2 (requests.compat)
 * urlparse (requests.compat)
 * win32com (pkg_resources._vendor.appdirs)
 * win32com.shell (pkg_resources._vendor.appdirs)
 * yaml (guessit.options)

我尝试了许多解决方法,但是没有任何效果。

我使用的模块:

tkinter
subliminal
tkmacosx

1 个答案:

答案 0 :(得分:1)

关于未找到的模块的消息是警告,不是错误。这些可能有问题也可能没有,但通常不是问题。尤其是,如果您使用Python 3,则几乎可以肯定各种“ compat”模块中缺少的可选模块是无害的(因为它们是Python 2 stdlib中名称的导入)。

乍一看,缺少的“ sympy”,“ regex”和“ yaml”可能有问题,您可以尝试安装这些python软件包。

作为背景知识,PyObjC在构建结束时显示了3个缺少的模块列表(假设类别中有缺少的模块):

  1. 无条件导入:这些是在导入模块时始终执行的导入(顶级导入和类作用域中的导入)

    除非包含导入的模块本身是可选的,否则这些问题往往会出现。

  2. 有条件的导入:这些是有条件的导入,因为它们是在函数中完成的,或者是因为它们在某种条件的语句中。

    这些往往无害。

  3. “从FOO导入名称”语句中缺少名称:在这些语句中,“名称”可以引用模块或导入模块中的定义。当不能100%清除NAME指向模块时,Py2app将报告这些。

    这些倾向于无害,尤其是当模块(“ FOO”)是C扩展时。