在我的Ubuntu 9.10 Linux Box中重启后尝试启动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']
有谁知道如何解决这个问题?
我知道这不是具体的编程问题,但它不允许我编程,所以我求你理解!
提前致谢。
答案 0 :(得分:8)
试试这个:
update-python-modules -p
(可能需要sudo那......) 资源: http://hg.opensource.lshift.net/mercurial-server/rev/32dba1a70a54
答案 1 :(得分:5)
我用Google搜索的所有网站都说你的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框中,它在这里:
>>> from mercurial import demandimport
>>> demandimport.__file__
'C:\\Python26\\lib\\site-packages\\mercurial-1.4.1-py2.6-win32.egg\\mercurial\\demandimport.pyc'
这是有效的,因为我对我的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
你的PYTHONPATH
没有提到善变。猜测一下,我会把它添加到你的PYTHONPATH:
/usr/local/lib/python2.6/site-packages
我会从make
重新安装mercurial。这个建议运作良好here。
编辑:在我的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
。
答案 2 :(得分:1)
mercurial是否位于其中一个库安装路径(dist-packages
或site-packages
)中?您可以使用find
工具查找它吗?
您是否有幸在此机器上安装小型库并从Python访问它们?
答案 3 :(得分:1)
感谢所有人的努力。
由于 hughdbrown ,我已经解决了这个问题。 hughdbrown,你让我意识到我在定义$ PYTHONPATH时犯了一个拼写错误;而不是添加路径/ usr / lib / pymodules / python2.6 ,我写了/ usr / lib / pymodules /所以python无法导入库...但是,我更正了它和我很高兴看到Mercurial和Co.再次工作。
唯一奇怪的是,为什么它改变了...好吧,从现在开始我会知道该怎么做。
答案 4 :(得分:0)
您可以尝试使用aptitude重新安装受影响的Python程序:
sudo aptitude reinstall mercurial