Cygwin与Windows路径冲突;同时使用Windows和Cygwin Python
我在Windows XP上安装了cygwin。后来我在Windows上安装了一些软件,导致cygwin中的Mercurial停止工作。简单来说,就是Python找不到它库里的模块了:
>>> import os
Traceback (most recent call last):
file "<stdin>", line 1, in <module>
ImportError: No module named os
我在Windows上安装的软件之一(subversion)使用了Python,所以现在Windows里有了自己的Python安装。别问我为什么想在cygwin下用Mercurial,而在Windows下用subversion;总之我就是想这么做,但这不是重点。看起来cygwin试图使用Windows的Python,而不是它自己的,或者至少我觉得是这样。如果这不是原因,请告诉我。无论如何……
$ find /cygdrive/c -name os.py /cygdrive/c/csvn/Python25/Lib/os.py /cygdrive/c/cygwin/lib/python2.6/os.py
通过echo $PATH可以确认,/cygdrive/c/csvn/Python25在/usr/lib/python2.6之前。我不是cygwin的高手,但从我了解到的情况来看,/etc/profile把Windows的路径添加到了cygwin的$PATH里,而我不知道怎么阻止它这样做。作为一个临时解决办法,我修改了.profile,明确设置了PATH,排除了那些Windows的路径。但是,问题依然存在:
$ echo $PATH
/usr/local/bin:/usr/bin:/usr/lib/python2.6
$ hg
'import site' failed; use -v for traceback
Traceback (most recent call last):
File "/usr/bin/hg", line 10, in <module>
import os
ImportError: No module named os
$ ls /usr/lib/python2.6/os.py
/usr/lib/python2.6/os.py
看起来路径冲突并没有真正解决,因为当我再次执行上面的“find”命令时,结果还是一样,/cygdrive/c/csvn/Python25/Lib/os.py仍然排在前面。从理论上讲,可能还有其他原因导致Python在cygwin上不工作,但无法控制我的PATH仍然是个问题。有谁有什么想法吗?