Cygwin和Windows路径冲突;同时使用Windows和cygwin Python

时间:2011-07-06 17:49:56

标签: python svn mercurial cygwin

我在Windows XP上安装了cygwin。在Windows上安装了一些软件之后,Mercurial on cygwin停止了工作。症状可以简化为python无法在其库中找到模块:

>>> import os
Traceback (most recent call last):
  file "<stdin>", line 1, in <module>
ImportError: No module named os

我在Windows(subversion)中安装的软件之一使用python,所以现在Windows有自己的Python安装。不要问为什么我希望在Windows下的cygwin和subversion下使用mercurial;我已经足够说了,但那不是重点。似乎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 wiz,但是从我可以告诉/ 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仍然是个问题。有任何想法吗?

2 个答案:

答案 0 :(得分:5)

不幸的是我的同事也有问题已经卸载了csvn的东西,所以我无法检查。但是阅读doc表明有罪的变量可能是$PYTHONHOME。检查它是否已设置并尝试取消设置!

答案 1 :(得分:0)

您是否尝试过在this other SO post中找到的解决方案?似乎是一个类似的问题。