如何更正损坏的$PYTHONPATH?

如何更正损坏的$PYTHONPATH?,python,version-control,mercurial,ubuntu-9.10,pythonpath,Python,Version Control,Mercurial,Ubuntu 9.10,Pythonpath,在我的Ubuntu9.10 Linux系统重启后,当我尝试启动Mercurial(hg)时,我收到了以下消息: abort: couldn't find mercurial libraries in [/usr/bin /usr/local/lib/python2.6/dist-packages/vipy-0.4-py2.6.egg /usr/local/lib/python2.6/dist-packages/nose-0.11.1-py2.6.egg /usr/local/lib/

在我的Ubuntu9.10 Linux系统重启后,当我尝试启动Mercurial(hg)时,我收到了以下消息:

      abort: couldn't find mercurial libraries in [/usr/bin /usr/local/lib/python2.6/dist-packages/vipy-0.4-py2.6.egg /usr/local/lib/python2.6/dist-packages/nose-0.11.1-py2.6.egg /usr/local/lib/python2.6/dist-packages/rope-0.9.2-py2.6.egg /usr/local/lib/python2.6/dist-packages/Sphinx-0.6.3-py2.6.egg /usr/local/lib/python2.6/dist-packages/django_html-0.0.1-py2.6.egg /usr/local/lib/python2.6/dist-packages/html5lib-0.11.1-py2.6.egg /home/kenny /home/kenny/Projects/soclone-read-only /home/kenny/python/Django /home/kenny/python/pysmell /home/kenny/python/Django/ropemode /home/kenny/python/Django/rope /home/kenny/python/lib /usr/lib/python2.6 /usr/lib/python2.6/plat-linux2 /usr/lib/python2.6/lib-tk /usr/lib/python2.6/lib-old /usr/lib/python2.6/lib-dynload /usr/local/lib/python2.6/dist-packages]

      (check your install and PYTHONPATH)
奇怪的是,其他Python程序没有找到它们的模块,包括django admin、bzr,但令人惊讶的是Python解释器本身正在启动

在这里您可以找到我当前的sys.path:

  ['', '/usr/local/lib/python2.6/dist-packages/vipy-0.4-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/nose-0.11.1-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/rope-0.9.2-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/Sphinx-0.6.3-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/django_html-0.0.1-py2.6.egg', '/usr/local/lib/python2.6/dist-packages/html5lib-0.11.1-py2.6.egg', '/home/kenny', '/home/kenny/Projects/soclone-read-only', '/home/kenny/python/Django', '/home/kenny/python/pysmell', '/home/kenny/python/Django/ropemode', '/home/kenny/python/Django/rope', '/home/kenny/python/lib', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/local/lib/python2.6/dist-packages']
有人知道如何解决这个问题吗

我知道这不是具体的编程问题,但它不允许我编程,所以我请求你们理解


提前感谢。

mercurial是否位于库安装路径之一(
dist-packages
site-packages
)中?您可以使用
find
工具查找它


您是否有幸在此计算机上安装了小型库并从Python访问它们?

您可以尝试使用aptitude重新安装受影响的Python程序:

sudo aptitude reinstall mercurial

我搜索过的所有网站都说你的
PYTHONPATH
设置错误。您在mercurial中遇到的代码如下:

try:
    from mercurial import demandimport; demandimport.enable()
except ImportError:
    import sys
    sys.stderr.write("abort: couldn't find mercurial libraries in [%s]\n" %
                     ' '.join(sys.path))
    sys.stderr.write("(check your install and PYTHONPATH)\n")
    sys.exit(-1)
那么您的机器上的
demandimport
在哪里?在我的windows box上,它位于以下位置:

>>> from mercurial import demandimport
>>> demandimport.__file__
'C:\\Python26\\lib\\site-packages\\mercurial-1.4.1-py2.6-win32.egg\\mercurial\\demandimport.pyc'
这是因为我的蟒蛇身上有mercurial

>>> import sys
>>> for s in sys.path:
...     print s
...
# Other crud deleted...
C:\Python26\lib\site-packages\mercurial-1.4.1-py2.6-win32.egg
C:\Windows\system32\python26.zip
C:\Python26\DLLs
C:\Python26\lib
C:\Python26\lib\plat-win
C:\Python26\lib\lib-tk
C:\Python26
C:\Python26\lib\site-packages
/usr/local/lib/python2.6/site-packages
你的
PYTHONPATH
没有提到mercurial。猜猜看,我会把这个添加到你的PYTHONPATH中:

>>> import sys
>>> for s in sys.path:
...     print s
...
# Other crud deleted...
C:\Python26\lib\site-packages\mercurial-1.4.1-py2.6-win32.egg
C:\Windows\system32\python26.zip
C:\Python26\DLLs
C:\Python26\lib
C:\Python26\lib\plat-win
C:\Python26\lib\lib-tk
C:\Python26
C:\Python26\lib\site-packages
/usr/local/lib/python2.6/site-packages
我将从
make
重新安装mercurial。这个建议很管用

编辑:在我的Ubuntu 9.10上,我得到了以下结果:

>>> import mercurial
>>> mercurial.__file__
'/usr/lib/pymodules/python2.6/mercurial/__init__.pyc'
>>> import sys
>>> for s in sys.path:
...     print s
...

/usr/local/lib/python2.6/dist-packages/pip-0.6.1-py2.6.egg
/usr/local/lib/python2.6/dist-packages/virtualenv-1.4.3-py2.6.egg
/usr/lib/python2.6
/usr/lib/python2.6/plat-linux2
/usr/lib/python2.6/lib-tk
/usr/lib/python2.6/lib-old
/usr/lib/python2.6/lib-dynload
/usr/lib/python2.6/dist-packages
/usr/lib/python2.6/dist-packages/PIL
/usr/lib/python2.6/dist-packages/gst-0.10
/usr/lib/pymodules/python2.6
/usr/lib/python2.6/dist-packages/gtk-2.0
/usr/lib/pymodules/python2.6/gtk-2.0
/usr/local/lib/python2.6/dist-packages
/usr/local/lib/python2.6/dist-packages/PIL

这让我觉得问题在于你们缺少了:
/usr/lib/pymodules/python2.6

谢谢你们大家的努力

多亏了hughdbrown,我解决了这个问题。hughdbrown,你让我意识到我在定义doing$PYTHONPATH时犯了一个错误;我没有添加路径/usr/lib/pymodules/python2.6,而是编写了/usr/lib/pymodules/以便python无法导入库。。。然而,我纠正了它,我很高兴看到Mercurial和Co.再次工作

唯一奇怪的是,为什么它会改变。。。好吧,从现在起我就知道该怎么办了。

试试这个:

更新python模块-p

(可能需要这么做…) 资料来源:

请在您的问题中包含错误消息,如果删除了粘贴箱,您的问题将失去其上下文。您是如何安装mercurial的?它是通过apt-get/aptitude还是从tar.gz源代码安装的?我是通过apt-get安装的,它在运行之前。。。不仅mercurial没有运行,而且所有在/usr/中带有库的python程序都会受到影响。。。Python引发了一个导入错误。我已经运行这个系统两个月了,没有这个问题。正如我所说。。重新启动后,我遇到了这个问题。使用find(find/usr/-name mercurial-type d)进行搜索时,我得到了以下信息:./lib/pyshared/python2.5/mercurial./lib/python2.6/mercurial./lib/pymodules/python2.6/mercurial./share/mercurial如果你指的是小型库,那么是的,我可以导入它们:)。此外,系统、操作系统、io等基本模块都没有问题。我的大多数库都位于/usr/lib/pymodules中,但在重新启动shell后将此路径添加到$PYTHONPATH并不能解决问题。谢谢你的努力。!试试
/usr/lib/pymodules/python2.6
。它是为我做的,但对mercurial服务器。不过,Mercurial也表现出了完全相同的问题。我用mercurial服务器替换了它,所以我没有在mercurial上进行测试。希望这是有道理的。对不起,伙计,但我不能重现最初的错误,因为我在发布帖子的两年里获得了新的生活。不过,我希望您的回答对其他人有用。这是我在Debian 6 32位上的有效解决方案。谢谢!也为我工作。在我的python路径最终被破坏之前,我确实使用pip和easy_安装安装了一些软件包。