0

我编写了一个导入“SHA256.py”的python脚本“thescript.py”,它们都在同一个目录“/thedirectory/include/”中。

在 PHP 中,我这样做:

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

这给了我结果:

回溯(最近一次调用):文件“thescript.py”,第 4 行,在?导入 SHA256 文件“/thedirectory/include/SHA256.py”,第 152 行,在?导入 _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在导入自身还是什么?

4

2 回答 2

1

这是因为通过 exec 执行时路径可能不同。

在 php 中通过 exec 命令执行 python 时检查路径

import sys
sys.path
于 2016-11-26T12:48:13.087 回答
0

PHP 运行的 python 版本错误。

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

于 2012-07-31T23:10:48.433 回答