我正在尝试使用pyinstaller打包我的程序。代码在Windows上运行良好,并使用SqlAlchemy,OpenCV和pyodbc包。
我运行pyinstaller来创建可执行文件并尝试运行它。我收到了错误:
ImportError: No module named ConfigParser
现在,我重新做同样的事情并查看来自pyinstaller的日志并收到警告:
WARNING: Hidden import "sqlalchemy.sql.functions.func" not found!
以及其他一些人。 然后有一个关于尝试以小写和大写形式导入ConfigParser的警告。
Attempted to add Python module twice with different upper/lowercases: ConfigParser
这可能是什么问题?
答案 0 :(得分:0)
所以,我明白了。在某种程度上 好像pyInstaller好像没有处理SWIG文件。
在sqlalchemy.utils
中有一个名为compat.py
的文件。它是使模块兼容所有版本的python。
例如,在python2.x中,有ConfigParser
,而在py3中,它被命名为configparser
因此compat.py中有一部分可以处理它:
if py3:
import configparser
# Some other such import statements
elif py2:
import ConfigParser as configparser
现在,pyinstaller被困在这里,因为它只关注导入,因此它试图导入两者并且惨败。
我对此的粗略解决方法包括修改compat.py文件并仅保留与我拥有的python版本相关的部分(2.x)。
再次运行pyinstaller证明是成功的! :)
虽然这一切都很粗糙,但可能还有更好的东西,但我找不到任何东西,所以我分享了对我有用的东西。