Jest to dość długi post, ale po wykonaniu obszernych badań nie mogłem znaleźć rozwiązania. Mam mieszany Django 1.4.1 / Planis 0.14.4 Projekt na osklujskim 10.8 i kontrolować przecinek za pomocą polecenia projektu Django {X0}} zgodnie z opisem Oto. Na przykład dzwoniąc

python manage.py scrapy crawl example_spider 

Działa bez problemu. Teraz jestem w miejscu, w którym chcę skonfigurować usługę internetową scrapyd, aby wdrożyć moje pająki. Jednak kiedy wykonuję

python manage.py scrapy server

Potem otrzymuję ten wyjątek:

scrapy.exceptions.NotConfigured: Unable to find scrapy.cfg file to infer project data dir

Więc, najwyraźniej przewijanie nie można znaleźć pliku scrapy.cfg, ponieważ nie wykonuję go z projektu przewijania. Pracuje jednak drugi przenoszony, ponieważ w moim projekcie Django {X1}} wykonałem:

sys.path.append('/absolute/path/to/my/Scrapy/project')
os.environ['SCRAPY_SETTINGS_MODULE'] = 'my_scrapy_project_name.settings'

Pytanie 1: Dlaczego pisanik nie może wykryć pliku scrapy.cfg w mojej konfiguracji? Jak mogę to rozwiązać?


Ponieważ wspomniane powyżej rzeczy nie działają, próbowałem uzyskać serwer scrapyd uruchomiony przy użyciu polecenia scrapy z katalogu projektu. Wykonujący scrapy server z najwyższego poziomu katalogu mojego pisemu projektu daje następujące:

$ 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> 

Serwer jest uruchomiony bez problemu, jednak plik settings.py mojego projektu przewijania nie można znaleźć, ponieważ odpowiednia zmienna środowiska nie jest już ustawiona. Dlatego robię następujące czynności w moim terminalu:

export PYTHONPATH=/absolute/path/to/my/Scrapy/project
export SCRAPY_SETTINGS_MODULE=my_scrapy_project_name.settings

Niestety, te dwa polecenia nie mają wpływu. Za każdym razem, gdy wykonuję scrapy server (lub dowolny inny komendę przewijania), otrzymuję komunikat, że pisancja nie może importować modułu ustawień projektu.

My scrapy.cfg ma obecnie następujące treści:

[settings]
default = my_scrapy_project_name.settings

[deploy:scrapyd]
url = http://localhost:6800/
project = my_scrapy_project_name

Kiedy próbuję wdrożyć mój projekt przewijania do serwera {X0}}, wydaje się, że działa najpierw, ale potem zdałem sobie sprawę, że żaden z pająków nie został przesłany, prawdopodobnie dlatego, że plik ustawień nie mógł zostać wykryty. Oto wyjście konsoli:

$ 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}

Pytanie 2: Jak zrobić właściwy eksport ścieżki i zmiennej środowiskowej powyżej, aby to ostrzeżenie znika?

Pytanie 3: Serwer {x0}} wydaje się jednak działać dobrze, jak mogę prawidłowo przesłać moje pająki?

Z góry bardzo dziękuję!

10
pemistahl 1 wrzesień 2012, 00:14

2 odpowiedzi

Najlepsza odpowiedź

Istnieją 3 linki wewnątrz Wiki pisanów:

Pierwszy i Drugi oba dotyczą problemów z Django i pisemnie sprzeczne ustawienia.

Mam nadzieję że to pomoże...

Nawet To pytanie w ten sposób odnosi się do wielu problemów związanych z Django i pisanik

2
Community 23 maj 2017, 10:31

Jeśli spojrzysz na Oddział kodu, który podnosi ten wyjątek i Definicja funkcji {x0}}, że to wywołuje, tylko pisancja miejsca jest poszukiwania twojego skorosfotograficznego. Możesz być może uruchomić os.chdir w swojej mankiecie.py lub przenieś swój skorosły. CFG do katalogu, z którego działasz.

2
Mu Mind 11 wrzesień 2012, 06:22