python2.7在cygwin下失败,提示ImportError: 没有名为time的模块
我最近在我的Windows 8桌面电脑上安装了cygwin,目的是为了在我的家庭网络中进行网络分析和性能评估。
安装完成后,我在使用easy_install时遇到了问题:
$ python ez_setup.py
Traceback (most recent call last):
File "ez_setup.py", line 67, in <module>
except ImportError: from md5 import md5
File "/usr/lib/python2.7/md5.py", line 10, in <module>
from hashlib import md5
File "/usr/lib/python2.7/hashlib.py", line 141, in <module>
import logging
File "/usr/lib/python2.7/logging/__init__.py", line 26, in <module>
import sys, os, time, cStringIO, traceback, warnings, weakref, collections
ImportError: No module named time
到目前为止,我的分析显示cygwin的python 2.7找不到time.dll:
python -vvv
>>> import time
# trying time.dll
# trying timemodule.dll
# trying time.py
# trying time.pyc
# trying /usr/lib/python2.7/time.dll
# trying /usr/lib/python2.7/timemodule.dll
# trying /usr/lib/python2.7/time.py
# trying /usr/lib/python2.7/time.pyc
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named time
不过,time.dll是已经安装的(只是没有在搜索的目录中):
$ find /usr/lib/python2.7/ -name "time*"
/usr/lib/python2.7/lib-dynload/time.dll
$ ldd /usr/lib/python2.7/lib-dynload/time.dll
ntdll.dll => /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll (0x7fff41430000)
KERNEL32.DLL => /cygdrive/c/WINDOWS/system32/KERNEL32.DLL (0x7fff408c0000)
KERNELBASE.dll => /cygdrive/c/WINDOWS/system32/KERNELBASE.dll (0x7fff3e970000)
fshook64.dll => /cygdrive/c/program files (x86)/f-secure/apps/computersecurity/hips/fshook64.dll (0x56640000)
PSAPI.DLL => /cygdrive/c/WINDOWS/system32/PSAPI.DLL (0x7fff40d40000)
ADVAPI32.dll => /cygdrive/c/WINDOWS/system32/ADVAPI32.dll (0x7fff405f0000)
msvcrt.dll => /cygdrive/c/WINDOWS/system32/msvcrt.dll (0x7fff3ef00000)
sechost.dll => /cygdrive/c/WINDOWS/SYSTEM32/sechost.dll (0x7fff40ea0000)
RPCRT4.dll => /cygdrive/c/WINDOWS/system32/RPCRT4.dll (0x7fff40a00000)
libpython2.7.dll => /usr/bin/libpython2.7.dll (0x53bb50000)
cygwin1.dll => /usr/bin/cygwin1.dll (0x180040000)
我希望这跟F-Secure没有关系(我最近在使用VirtualBox时遇到了严重的问题)。另外,我还需要设置环境变量PATH、PYTHONHOME和PYTHONPATH,具体如下:
export PYTHONHOME=/usr/bin
export PYTHONPATH=/usr/lib/python2.7
export PATH=/usr/local/bin:/usr/bin
export PATH=$PATH:/cygdrive/c/WINDOWS/system32
但这些设置并没有解决问题。而且把'/usr/lib/python2.7/lib-dynload/'添加到PATH中也没有帮助。
1 个回答
3
最后我找到了问题的原因:
PYTHONHOME这个环境变量被设置成了/usr/bin。修正这个设置,把它改成/usr后,现在一切都正常了。