|
本帖最后由 pythonpython 于 2017-10-27 11:05 编辑
我有2个系统,一个win 10 和一个win7 共2台机器
每台机器都安装了anaconda, 同一个版本的pyinstaller, 同一个版本的shapely
在anaconda下面,都有这个dll geos_c.dll, 暂且叫A_dll win7 和 win10是一样的。
现在我有一个程序,叫main.py, 调用了shapely, shapely又调用了geos_c.dll
在win10, 用pyinstaller main.py, 产生一个包裹,含有main.exe, geos_c.dll(暂且叫B_dll, 它比A_dll大)等, main.exe 只能在win10 跑,不能在win7跑。
在win7, 用pyinstaller main.py, 产生一个包裹,含有main.exe, geos_c.dll(暂且叫C_dll, 和B_dll内容不一样,大小一样)等, main.exe 可以同时在win7 和win10跑。
我还做了几个实验
1. A_dll 替换在win10下的B_dll, main.exe 就变得可以同时在win 10 和win7下跑了。
有几个问题
1. pyinstaller 为什么会改动原始的dll, 它是加了什么东西到dll里面吗?
2. pyinstaller 在win7 和win 10 给dll加个东西还不一样?
3. 怎么解决这个问题,我现在是想用win10 来通过pyinstaller 产生main.exe, 如何才能让main在win7下工作? (因为我做得东西需要同时给win10和win7的人用)
为了大家容易检查 我把几个dll放在这里
原始的A_dll https://ufile.io/43tdi
win7 下产生的 https://ufile.io/qivsy
win10下产生的 https://ufile.io/c2evc
|
|