¿Cómo puedo corregir un $ PYTHONPATH corrompido?
-
13-09-2019 - |
Pregunta
Cuando se trata de poner en marcha Mercurial (hg) después de un reinicio en mi Ubuntu 9.10 Linux Box llegué siguiente mensaje:
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)
Misteriosamente otros programas Python no encuentran sus módulos, incluyendo django-admin, bzr, pero es sorprendente que el intérprete de Python en sí está lanzando.
Aquí puede encontrar mi sys.path actual:
['', '/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']
¿Alguien sabe cómo resolver este problema?
Sé que esto no es una cuestión de programación en concreto, pero me desautoriza al programa, por lo que pido su comprensión!
Gracias de antemano.
Solución
Prueba esto:
update-python-módulos -p
(podría necesitar que sudo ...) Fuente: http://hg.opensource.lshift.net/mercurial-server/rev/32dba1a70a54
Otros consejos
Todos los sitios Googled para este dicen que sus PYTHONPATH
is conjunto equivocado. El código que usted está golpeando en mercurial parece ser la siguiente:
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)
Entonces, ¿dónde está demandimport
en su máquina? En mi caja de ventanas, es aquí:
>>> from mercurial import demandimport
>>> demandimport.__file__
'C:\\Python26\\lib\\site-packages\\mercurial-1.4.1-py2.6-win32.egg\\mercurial\\demandimport.pyc'
Y eso funciona porque tengo mercurial en mi 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
Su PYTHONPATH
no hace mención de mercurio. En una conjetura, me gustaría añadir esto a su PYTHONPATH:
/usr/local/lib/python2.6/site-packages
y me gustaría volver a instalar mercurial de make
. Ese consejo funcionó bien aquí .
Edit: Y en mi caja de Ubuntu 9.10, tengo estos 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
Y esto me hace pensar que el problema es que este no se encuentra para usted:. /usr/lib/pymodules/python2.6
Se mercurial ubicado en una de las rutas de instalación de la biblioteca (o dist-packages
site-packages
)? Puede utilizar la herramienta find
a buscarlo?
¿Ha tenido suerte instalación de bibliotecas pequeñas y acceder a ellos desde Python en esta máquina?
Gracias por el esfuerzo de todos ustedes.
He resuelto el problema gracias a hughdbrown . hughdbrown, usted ha hecho darme cuenta de que cometido un error tipográfico en la definición de hacer $ PYTHONPATH; en lugar de añadir la ruta / usr / lib / pymodules / python2.6 , escribí / usr / lib / pymodules / pitón de modo que no podía importar las bibliotecas ... Sin embargo, lo corregí y yo da gusto ver Mercurial and Co. trabajar de nuevo.
Lo único extraño es, por qué ha cambiado ... Bueno, voy a ser un conocimiento a partir de ahora lo que debe hacer.
Se podría tratar de volver a instalar los programas en Python afectadas con aptitud:
sudo aptitude reinstall mercurial