|
之前朋友们反馈,ppd自动提交脚本在fah程序目录【C:\Program Files (x86)\FAHClient】下无法load
报错信息为:
- (base) C:\Program Files (x86)\FAHClient>python
- Python 3.7.4 (default, Aug 9 2019, 18:34:13) [MSC v.1915 64 bit (AMD64)] :: Ana
- conda, Inc. on win32
- Type "help", "copyright", "credits" or "license" for more information.
- >>> import socket
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- File "C:\Users\root\Anaconda3\lib\socket.py", line 49, in <module>
- import _socket
- ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。
- >>>
复制代码
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文件。从而引发异常。
到此,宣告破案!如下图:
强调一点:ppd自动提交py脚本在64位和32位python3下均可运行,没有差异。这是python解释器所保证的。
|
评分
-
查看全部评分
|