找回密码
 新注册用户
搜索
查看: 3209|回复: 1

破案了: ppd自动提交脚本在fah程序目录下无法load

[复制链接]
发表于 2020-4-8 13:13:30 | 显示全部楼层 |阅读模式
之前朋友们反馈,ppd自动提交脚本在fah程序目录【C:\Program Files (x86)\FAHClient】下无法load
报错信息为:
  1. (base) C:\Program Files (x86)\FAHClient>python
  2. Python 3.7.4 (default, Aug  9 2019, 18:34:13) [MSC v.1915 64 bit (AMD64)] :: Ana
  3. conda, Inc. on win32
  4. Type "help", "copyright", "credits" or "license" for more information.
  5. >>> import socket
  6. Traceback (most recent call last):
  7.   File "<stdin>", line 1, in <module>
  8.   File "C:\Users\root\Anaconda3\lib\socket.py", line 49, in <module>
  9.     import _socket
  10. ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。
  11. >>>
复制代码

ppd自动提交脚本放在其他目录却能正常运行。 我们怀疑是fah程序目录【C:\Program Files (x86)\FAHClient】的特殊权限所致。
经过一番研究发现,目录【C:\Program Files (x86)\FAHClient】并没有较为特殊的权限。 继续排查:

我们发现,fah程序目录有很多pyd文件, pyd文件是python程序运行所需的dll文件。为什么有这些pyd文件? 这是因为fah程序的一部分是python语言开发,代码https://github.com/FoldingAtHome/fah-control

因此,我们分析,导致ppd自动提交脚本在fah程序目录无法load,应该就是这些pyd干扰了我们安装的python 3的正常运行。

而fah程序依赖的python版本是32bit的python 2.6,【C:\Program Files (x86)\FAHClient】下的pyd文件无法与python 3兼容(无论是32位还是64位python3.8,与朋友测试结果一样)

我们打开python的verbose功能,python -vvv运行,终于看见python试图加载fah程序目录下的pyd文件。从而引发异常。

到此,宣告破案!如下图:

360截图20200408125300094.jpg


强调一点:ppd自动提交py脚本在64位和32位python3下均可运行,没有差异。这是python解释器所保证的。


评分

参与人数 1基本分 +8 收起 理由
Keyco + 8 很给力!

查看全部评分

回复

使用道具 举报

发表于 2020-4-8 16:39:10 | 显示全部楼层
辛苦!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 新注册用户

本版积分规则

论坛官方淘宝店开业啦~

Archiver|手机版|小黑屋|中国分布式计算总站 ( 沪ICP备05042587号 )

GMT+8, 2024-4-20 19:54

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表