我编写了一个导入“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
是自然导入的吗?
答案 0 :(得分:0)
PHP运行的是错误的python版本。
实际上import hashlib
失败了,虽然我没有注意到这一点,因为它位于try
块中,因此没有在该行上引发错误。
答案 1 :(得分:0)
这是因为当你通过exec执行时路径可能会有所不同。
在php
中通过exec命令执行python时检查你的路径import sys
sys.path