我寫了一個python腳本「thescript.py」,它導入了「SHA256.py」,它們都在同一個目錄「/ thedirectory /包括/」。當使用PHP的exec()調用python腳本時,「ImportError:No module named _SHA256」
在PHP中我做的:
chdir('/thedirectory/include/');
$result = exec('thescript.py argument1 2>&1');
這使我的結果:
Traceback (most recent call last): File "thescript.py", line 4, in ? import SHA256 File "/thedirectory/include/SHA256.py", line 152, in ? import _SHA256 ImportError: No module named _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
?
是'_SHA256'實際Python模塊?我在谷歌找不到任何關於它的東西,它不在我的python安裝中。 – 2012-07-31 22:58:13
我剛剛發現,當我從PHP執行exec()時,問題確實是'import hashlib'失敗。但是當我從shell運行腳本時發現hashlib。所以我想我需要以某種方式添加hashlib路徑。 – Olhovsky 2012-07-31 23:07:37
_SHA256與SHA256不同,它是一個獨特的模塊。主要的下劃線有內部/私人的內涵,但除了下劃線只是另一個角色。這段代碼的語義是「我們更喜歡在hashlib模塊中使用實現,但如果在這種環境中不可用,我們可以回退到_SHA256模塊。」在你的情況下,沒有一個可用。 – 2012-07-31 23:18:09