Como posso corrigir um $ PYTHONPATH corrompido?
-
13-09-2019 - |
Pergunta
Ao tentar lançar Mercurial (hg) após um reinício no meu Ubuntu 9.10 Linux Box Fui seguinte mensagem:
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)
programas Misteriosamente outro Python não encontrar seus módulos, incluindo Django-admin, bzr, mas surpreendentemente o Python intérprete em si está lançando.
Aqui você pode encontrar meu sys.path atual:
['', '/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']
Alguém sabe como resolver este problema?
Eu sei que esta não é uma questão de programação, em específico, mas me proíbe de programa, então eu peço sua compreensão!
Agradecemos antecipadamente.
Solução
Tente isto:
update-python-módulos -p
(pode precisar sudo isso ...) Fonte: http://hg.opensource.lshift.net/mercurial-server/rev/32dba1a70a54
Outras dicas
Todos os sites Eu pesquisei para este dizer que o seu PYTHONPATH
is definir errado. O código que você está batendo no aparece mercuriais ser esta:
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)
Então, onde está demandimport
em sua máquina? Em minhas janelas caixa, é aqui:
>>> from mercurial import demandimport
>>> demandimport.__file__
'C:\\Python26\\lib\\site-packages\\mercurial-1.4.1-py2.6-win32.egg\\mercurial\\demandimport.pyc'
E isso funciona porque eu tenho mercurial no meu 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
Seu PYTHONPATH
não faz qualquer menção de mercurial. Em uma suposição, gostaria de acrescentar isso ao seu PYTHONPATH:
/usr/local/lib/python2.6/site-packages
e gostaria de voltar a instalar mercurial de make
. Esse conselho funcionou bem aqui .
Edit: E na minha caixa de Ubuntu 9.10, eu tenho estes resultados:
>>> 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
E isso me faz pensar que o problema é que isso está faltando para você:. /usr/lib/pymodules/python2.6
É mercurial localizado em um dos caminhos de instalação de biblioteca (dist-packages
ou site-packages
)? Você pode usar a ferramenta find
de olhar para ele?
Você teve sorte de instalar pequenas bibliotecas e acessá-los de Python nesta máquina?
Obrigado pelo esforço de todos vocês.
Eu já resolveu o problema graças a hughdbrown . hughdbrown, você me fez perceber que eu cometeu um erro de digitação na definição fazendo $ PYTHONPATH; em vez de adicionar o caminho / usr / lib / pymodules / python2.6 , eu escrevi / usr / lib / pymodules / so python não poderia importar as bibliotecas ... No entanto, eu corrigi-lo e eu estou contente de ver Mercurial e Co. trabalho novamente.
A única coisa estranha é, por que mudou ... Bem, eu vou estar sabendo a partir de agora o que fazer.
Você poderia tentar reinstalar os programas em Python afetadas com aptidão:
sudo aptitude reinstall mercurial