我正在尝试从Windows命令行运行我的python脚本。
示例:cygwin> PYTHONPATH = dir1:dir2 python script.py param1 param2
我已经从Ubuntu的命令行中做到了这一点,没有任何问题。
然而,在Windows上,我一直无法实现它。在一个特定的脚本上,Python声称它无法导入_AES,但是安装了pycrypto,并且脚本在pycharm中运行得非常好:
来自cygwin:
$ PYTHONPATH=.:../..:/cygdrive/c/Python27/Lib/site-packages/ ./decrypt_tclaves.py Param1 Param2 Param3
Traceback (most recent call last):
File "./decrypt_tclaves.py", line 29, in <module>
from encrypted_tables import unpack_tclaves
File "/cygdrive/c/Users/ItaloMunoz/Documents/Dev/Autentia6/server/autentia_db/encrypted_tables.py", line 6, in <module>
from Crypto.Cipher import AES
File "/cygdrive/c/Python27/Lib/site-packages/Crypto/Cipher/AES.py", line 50, in <module>
from Crypto.Cipher import _AES
ImportError: cannot import name _AES
$ pip install pycrypto
Requirement already satisfied: pycrypto in c:\python27\lib\site-packages
$ echo $PATH | sed 's/:/\\\n/g' | grep -i python
/cygdrive/c/Python27\
/cygdrive/c/Python27/Scripts/\
我想到了一个权限问题,所以我运行了下面的命令,但问题保持不变:
$chmod 777 -R /cygdrive/c/Python27/Lib/site-packages/
我也尝试过pycharm的命令行,结果相同(再次来自cygwin):
$ PYTHONPATH=.:../..:/cygdrive/c/Python27/Lib/site-packages/ python "C:\\Program Files\\JetBrains\\PyCharm Community Edition 2017.1.3\\helpers\\pydev\\pydev_run_in_console.py" 52333 52334 C:/Users/ItaloMunoz/Documents/Dev/Autentia6/server/autentia_db/decrypt_tclaves.py Param1 Param2 Param3
Running C:/Users/ItaloMunoz/Documents/Dev/Autentia6/server/autentia_db/decrypt_tclaves.py
PyDev console: starting.
Traceback (most recent call last):
File "C:\Program Files\JetBrains\PyCharm Community Edition 2017.1.3\helpers\pydev\pydev_run_in_console.py", line 78, in <module>
globals = run_file(file, None, None)
File "C:\Program Files\JetBrains\PyCharm Community Edition 2017.1.3\helpers\pydev\pydev_run_in_console.py", line 35, in run_file
pydev_imports.execfile(file, globals, locals) # execute the script
File "C:/Users/ItaloMunoz/Documents/Dev/Autentia6/server/autentia_db/decrypt_tclaves.py", line 29, in <module>
from encrypted_tables import unpack_tclaves
File "C:/Users/ItaloMunoz/Documents/Dev/Autentia6/server/autentia_db/encrypted_tables.py", line 6, in <module>
from Crypto.Cipher import AES
File "/cygdrive/c/Python27/Lib/site-packages/Crypto/Cipher/AES.py", line 50, in <module>
from Crypto.Cipher import _AES
ImportError: cannot import name _AES
来自cmd:
问题似乎最糟糕,因为'autentia_common'由%PYTHONPATH%指向(PYTHONPATH中的第二个目录:.. \ ..)
$set | findstr /i "pythonpath"
PYTHONPATH=.:..\..
$python decrypt_tclaves.py Param1 Param2 Param3
Traceback (most recent call last):
File "decrypt_tclaves.py", line 28, in <module>
from autentia_common import log
ImportError: No module named autentia_common
Windows上的pycharm输出:
C:\Python27\python.exe C:/Users/ItaloMunoz/Documents/Dev/Autentia6/server/autentia_db/decrypt_tclaves.py Param1 Param2 Param3
0035303233352a5c345e6a642f226c640930272665d1e7773e402823225f61
0035303233352a5c345e6a642f226c640930272665d1e7773e402823225f6100
31345a2e6f722b37342d265cd1e76c643065773e40280923225f5e6a61272631
31345a2e6f722b37342d265cd1e76c643065773e40280923225f5e6a61272631... (more output here)
Process finished with exit code 0
那么,我错过了什么?任何指导都将非常感谢,谢谢!
注意:使用python 2.7。它是唯一安装的解释器