Как я могу исправить поврежденный $ PYTHONPATH? - PullRequest
6 голосов
/ 04 декабря 2009

При попытке запустить Mercurial (hg) после перезапуска в моем Ubuntu 9.10 Linux Box я получил следующее сообщение:

      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']

Кто-нибудь знает, как решить эту проблему?

Я знаю, что это не конкретный вопрос программирования, но он не позволяет мне программировать, поэтому я прошу вашего понимания!

Заранее спасибо.

Ответы [ 5 ]

8 голосов
/ 14 октября 2011

Попробуйте это:

update-python-modules -p

(может понадобиться sudo, что ...) Источник: http://hg.opensource.lshift.net/mercurial-server/rev/32dba1a70a54

5 голосов
/ 04 декабря 2009

Все сайты, на которые я гуглил, говорят, что ваш 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

и я бы переустановил Mercurial с make. Этот совет хорошо сработал здесь .

Редактировать: И на моем 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.

1 голос
/ 04 декабря 2009

Спасибо за усилия всем вам.

Я решил проблему благодаря hughdbrown . hughdbrown, вы заставили меня осознать, что я допустил опечатку при определении выполнения $ PYTHONPATH; вместо добавления пути /usr/lib/pymodules/python2.6 я написал / usr / lib / pymodules /, чтобы python не мог импортировать библиотеки ... Однако я исправил это и я ' я рада, что Mercurial и Co. снова работают.

Единственная странная вещь: ПОЧЕМУ это изменилось ... Ну, теперь я буду знать, что делать.

1 голос
/ 04 декабря 2009

Находится ли Mercurial в одном из путей установки библиотеки (dist-packages или site-packages)? Вы можете использовать инструмент find, чтобы найти его?

Вам повезло с установкой небольших библиотек и доступом к ним из Python на этом компьютере?

0 голосов
/ 04 декабря 2009

Вы можете попробовать переустановить уязвимые программы Python с помощью aptitude:

sudo aptitude reinstall mercurial
...