Como tuve algunos problemas con python2.5, probé también python 2.7 y ahora obtengo un error diferente:
(Supongo que hay algún problema con los ctypes y los dlls de Windows, pero no puedo decir mucho más que eso ...)
Cc C-cException en el hilo Thread-2:
Rastreo (llamadas recientes más última):
Archivo "c: Python27libthreading.py", línea 552, en __bootstrap_inner
self.run ()
Archivo "c: Python27libsite-packageswatchdog-0.5.4-py2.7.eggwatchdogobserversapi.py", línea 192, en ejecución
self.queue_events (self.timeout)
Archivo "c: Python27libsite-packageswatchdog-0.5.4-py2.7.eggwatchdogobserversread_directory_changes.py", línea 80, en queue_events
self.watch.is_recursive)
Archivo "c: Python27libsite-packageswatchdog-0.5.4-py2.7.eggwatchdogobserverswinapi_common.py", línea 130, en read_directory_changes
Ninguna)
Archivo "c: Python27libsite-packageswatchdog-0.5.4-py2.7.eggwatchdogobserverswinapi.py", línea 103, en _errcheck_bool
subir ctypes.WinError ()
WindowsError: [Error 1] Función incorrecta.
Hola,
Lamento haberme topado con este problema de hace dos años, pero encontré exactamente el mismo problema con Windows 10, python2.7 y watchdog 0.8.3
Se puede reproducir mediante el siguiente código:
import time
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
class Handler(FileSystemEventHandler):
def on_any_event(self, event):
print "File changed: %s" % event.src_path
if __name__ == '__main__':
event_handler = Handler()
observer = Observer()
observer.schedule(event_handler, '.', recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
La excepción resultante se ve así:
Exception in thread Thread-2:
Traceback (most recent call last):
File "c:\python27\Lib\threading.py", line 801, in __bootstrap_inner
self.run()
File "C:\Users\IEUser\Envs\xtrude\lib\site-packages\watchdog\observers\api.py", line 146, in run
self.queue_events(self.timeout)
File "C:\Users\IEUser\Envs\xtrude\lib\site-packages\watchdog\observers\read_directory_changes.py", line 77, in queue_events
winapi_events = read_events(self._handle, self.watch.is_recursive)
File "C:\Users\IEUser\Envs\xtrude\lib\site-packages\watchdog\observers\winapi.py", line 347, in read_events
buf, nbytes = read_directory_changes(handle, recursive)
File "C:\Users\IEUser\Envs\xtrude\lib\site-packages\watchdog\observers\winapi.py", line 307, in read_directory_changes
raise e
WindowsError: [Error 1] Incorrect function.
Por favor dígame si necesita más información.
Investigué un poco la API de Windows por mi cuenta y, efectivamente, pude identificar el problema.
Buscando los valores de retorno de ReadDirectoryChangesW encontré lo siguiente:
Si el redirector de red o el sistema de archivos de destino no admite esta operación, la función falla con ERROR_INVALID_FUNCTION.
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365465 (v = frente a 85) .aspx
He estado trabajando en una red compartida.
Copiar los archivos que necesito ver en un sistema de archivos local lo solucionó.
Dejaré esto aquí en caso de que alguien más encuentre este problema mientras busca en Google el mensaje de error.
Esto me ayudó solo hoy. Tal vez deberíamos generar un error personalizado con un mensaje un poco más detallado de por qué sucedió esto (o tal vez solo un enlace a este problema)
Comentario más útil
Investigué un poco la API de Windows por mi cuenta y, efectivamente, pude identificar el problema.
Buscando los valores de retorno de ReadDirectoryChangesW encontré lo siguiente:
He estado trabajando en una red compartida.
Copiar los archivos que necesito ver en un sistema de archivos local lo solucionó.
Dejaré esto aquí en caso de que alguien más encuentre este problema mientras busca en Google el mensaje de error.