" ImportError:没有名为_SHA256"的模块当使用PHP的exec()来调用python脚本时

时间:2012-07-31 22:11:13

标签: php python import exec

我编写了一个导入“SHA256.py”的python脚本“thescript.py”,这两个脚本位于同一目录“/ thedirectory / include /".

在PHP中我做:

chdir('/thedirectory/include/');
$result = exec('thescript.py argument1 2>&1');

这给了我结果:

  

Traceback(最近一次调用最后一次):文件“thescript.py”,   第4行,在?       导入SHA256文件“/thedirectory/include/SHA256.py”,第152行,在?       import _SHA256 ImportError:没有名为_SHA25的模块

导致此错误的SHA256.py行位于:

try:
    import hashlib
    hashFactory = hashlib.sha256
except ImportError:
    #from Crypto.Hash import _SHA256
    import _SHA256  # <--- ERROR IS OCCURRING ON THIS LINE
    hashFactory = _SHA256

如果我通过SSH从命令行运行它,它运行正常。为什么不能导入_SHA256?

说实话,我不明白包名之前的下划线是什么。

“SHA256.py”中的行import _SHA256是自然导入的吗?

2 个答案:

答案 0 :(得分:0)

PHP运行的是错误的python版本。

实际上import hashlib失败了,虽然我没有注意到这一点,因为它位于try块中,因此没有在该行上引发错误。

答案 1 :(得分:0)

这是因为当你通过exec执行时路径可能会有所不同。

在php

中通过exec命令执行python时检查你的路径
import sys
sys.path