Creo que el problema está en la forma en que el modo python de Emacs ejecuta Python.Si escribo M-x run-python
, entonces veo esto:
>>> import sys
>>> '' in sys.path
False
>>>
mientras que si corro el intérprete de python de la cáscara, veo:
>>> import sys
>>> '' in sys.path
True
>>>
Esto parece ser debido al código siguiente en run-python
de progmodes/python.el:
(let* ((cmdlist
(append (python-args-to-list cmd)
'("-i" "-c" "import sys; sys.path.remove('')")))
que no tiene ningún comentario, y la siguiente entrada del Registro de cambios útil:
2008-08-24 Romain Francoise <[email protected]>
* progmodes/python.el (run-python): Remove '' from sys.path.
Yo diría que esto es un error en Emacs. He aquí una solución que se puede poner en el fichero .emacs:
(defun python-reinstate-current-directory()
"When running Python, add the current directory ('') to the head of sys.path.
For reasons unexplained, run-python passes arguments to the
interpreter that explicitly remove '' from sys.path. This means
that, for example, using `python-send-buffer' in a buffer
visiting a module's code will fail to find other modules in the
same directory.
Adding this function to `inferior-python-mode-hook' reinstates
the current directory in Python's search path."
(python-send-string "sys.path[0:0] = ['']"))
(add-hook 'inferior-python-mode-hook 'python-reinstate-current-directory)
No intento faltarle el respeto, solo digo esto porque nunca he tenido problemas como este, y solo quiero asegurarme de los suyos, pero cuando intenta ejecutar el archivo normalmente con python, fuera de emacs, funciona correctamente, ¿verdad? – Nikwin
Además, intente ejecutar el siguiente código python: import os print os.listdir ('.') y vea qué carpeta se imprime. – Nikwin
Sí, lo escribí en Scite y funcionó. Estoy cambiando a emacs porque es un poco más dinámico (obtuvo un código de prueba para probar rápidamente, mientras que Scite simplemente ejecuta un comando python y muestra el resultado). Sin ofender tomada por supuesto :) – smith