python - example - No se puede importar el módulo de configuración de Scrapy o su scrapy.cfg
scrapy sitemapspider (2)
Si observa la rama de código que genera esta excepción y la definición de la función más closest_scrapy_cfg
que llama, el único lugar donde scrapy está buscando su scrapy.cfg está en el directorio desde el que ejecuta el comando y en cualquier directorio padre. Puede ejecutar os.chdir
en su manage.py, o mover su scrapy.cfg al directorio desde el que se está ejecutando.
Esta es una publicación bastante larga, pero después de hacer una extensa investigación no pude encontrar una solución. Tengo un proyecto mixto Django 1.4.1 / Scrapy 0.14.4 en OSX 10.8 y controlo Scrapy con el comando manage.py
del proyecto Django como se describe aquí . Por ejemplo, llamar
python manage.py scrapy crawl example_spider
funciona sin problemas Ahora estoy en el punto donde quiero configurar el servicio web scrapyd
para desplegar mis arañas. Sin embargo, cuando ejecuto
python manage.py scrapy server
entonces obtengo esta excepción:
scrapy.exceptions.NotConfigured: Unable to find scrapy.cfg file to infer project data dir
Entonces, aparentemente Scrapy no puede encontrar el archivo scrapy.cfg
porque no lo ejecuto desde el proyecto de Scrapy. Los otros comandos de Scrapy funcionan, sin embargo, porque en la settings.py
del proyecto Django.py hice lo siguiente:
sys.path.append(''/absolute/path/to/my/Scrapy/project'')
os.environ[''SCRAPY_SETTINGS_MODULE''] = ''my_scrapy_project_name.settings''
Pregunta 1: ¿Por qué Scrapy no puede detectar el archivo scrapy.cfg
en mi configuración? ¿Cómo puedo resolver esto?
Como las cosas mencionadas anteriormente no funcionan, intenté scrapyd
servidor scrapyd
utilizando solo el comando scrapy
desde mi directorio de proyectos de Scrapy. scrapy server
desde el directorio de nivel superior de mi proyecto de Scrapy produce lo siguiente:
$ scrapy server
UserWarning: Cannot import scrapy settings module my_scrapy_project_name.settings
warnings.warn("Cannot import scrapy settings module %s" % scrapy_module)
2012-08-31 21:58:31+0200 [-] Log opened.
2012-08-31 21:58:32+0200 [-] Scrapyd web console available at http://localhost:6800/
2012-08-31 21:58:32+0200 [Launcher] Scrapyd started: max_proc=8, runner=''scrapyd.runner''
2012-08-31 21:58:32+0200 [-] Site starting on 6800
2012-08-31 21:58:32+0200 [-] Starting factory <twisted.web.server.Site instance at 0x101dd3d88>
El servidor se está ejecutando sin problemas, sin embargo, el archivo settings.py
de mi proyecto Scrapy no se puede encontrar porque la variable de entorno respectiva ya no está configurada. Es por eso que hago lo siguiente en mi terminal:
export PYTHONPATH=/absolute/path/to/my/Scrapy/project
export SCRAPY_SETTINGS_MODULE=my_scrapy_project_name.settings
Desafortunadamente, estos dos comandos no tienen ningún efecto. Cada vez que scrapy server
(o cualquier otro comando de Scrapy), aparece el mensaje de que Scrapy no puede importar el módulo de configuración de su proyecto.
Mi scrapy.cfg
solo tiene el siguiente contenido en este momento:
[settings]
default = my_scrapy_project_name.settings
[deploy:scrapyd]
url = http://localhost:6800/
project = my_scrapy_project_name
Cuando trato de implementar mi proyecto Scrapy en el servidor scrapyd
, parece que funciona al principio, pero luego me di cuenta de que ninguna de las arañas se había subido, probablemente porque el archivo de configuración no se pudo detectar. Aquí está la salida de la consola:
$ scrapy deploy scrapyd -p my_scrapy_project_name
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-
packages/scrapy/utils/project.py:17: UserWarning: Cannot import scrapy
settings module my_scrapy_project_name.settings
warnings.warn("Cannot import scrapy settings module %s" %
scrapy_module)
Building egg of event_crawler-1346531706
''build/lib'' does not exist -- can''t clean it
''build/bdist.macosx-10.6-intel'' does not exist -- can''t clean it
''build/scripts-2.7'' does not exist -- can''t clean it
zip_safe flag not set; analyzing archive contents...
Deploying event_crawler-1346531706 to http://localhost:6800/addversion.json
Server response (200):
{"status": "ok", "project": "my_scrapy_project_name", "version": "1346531706", "spiders": 0}
Pregunta 2: ¿Cómo hacer la exportación correcta de la variable de ruta y entorno anterior para que esta advertencia desaparezca?
Pregunta 3: Dado que el servidor scrapyd
parece funcionar bien, ¿cómo puedo cargar mis arañas correctamente?
¡Muchas gracias de antemano!
hay 3 enlaces dentro de la wiki de scrapy :
el primero y el segundo tratan los problemas con las configuraciones conflictivas de django y scrapy.
espero que esto ayude...
incluso esta pregunta sobre SO aborda muchos de los problemas de configuración entre django y scrapy