从exe引用已安装的模块,并忽略打包的版本

时间:2019-02-12 10:21:39

标签: python pyinstaller python-2.x pymssql

我继承了python应用程序。该应用程序具有使用PyInstaller编译的exe,该exe包含很多依赖项。它还与exe放在同一文件夹中。py脚本。

应用程序使用Pymssqlmssql数据库进行通话。我需要修改一个外部脚本,以便它与azure数据库对话。

这似乎很简单。我修改了连接参数,安装了OpenSSLFreeTDS。但是,当我尝试连接时,总是会收到错误消息:“服务器需要加密,但未编译支持”。

我认为它正在使用exe中的pymssql模块,而不是新安装的版本。我可以看到FreeTDS的版本较旧。

如何让该应用忽略旧版本并使用已安装的系统?我尝试过类似以下操作:from sys import pymssql as pymssql2,但我收到错误消息,无法导入名称{{ 1}}。

我没有用于创建exe的代码,并且不确定我是否具有它使用的所有依赖项。因此,我尽可能避免创建新的exe。

这是我第一次使用python,因此如果术语有误,我深表歉意!

1 个答案:

答案 0 :(得分:0)

您处在困境中。程序编译为exe后,几乎没有灵活性。编译后更改导入语句的唯一方法是,如果源明确允许这样做。

尝试this进行反编译。如果可行,您可能会丢失源中的所有评论。