python2.7在cygwin下失败,提示ImportError: 没有名为time的模块

2 投票
1 回答
9435 浏览
提问于 2025-04-19 18:56

我最近在我的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后,现在一切都正常了。

撰写回答