2015-01-31 10 views
5

Abbiamo un progetto del tutto normale Scrapy, qualcosa di simile:Scrapyd non riesce a trovare il codice in una sotto-directory

project/ 
     setup.py 
     scrapy.cfg 
     SOME_DIR_WITH_PYTHON_MODULE/ 
            __init__.py 
     project/ 
       settings.py 
       pipelines.py 
       __init__.py 
       spiders/ 
        __init__.py 
        somespider.py 

Tutto funziona alla grande se corriamo da riga di comando scrapy crawl somespider...

Ma quando lo distribuiamo ed eseguiamo usando Scrapyd, non riesce a importare il codice da SOME_DIR_WITH_PYTHON_MODULE. Sembra che non veda il codice lì per alcuni motivi sconosciuti.

Abbiamo provato a importarlo nel file pipelines.py. Provato così:

from project.SOME_DIR_WITH_PYTHON_MODULE import *

e così:

from SOME_DIR_WITH_PYTHON_MODULE import *

... e niente ha funzionato. Anche se ha funzionato se eseguito da un'esecuzione 'diretta' da riga di comando utilizzando la scansione scrapy.

Cosa dovremmo fare per farlo funzionare?

Grazie!

risposta

1

In realtà, ho trovato il motivo. Avrei dovuto utilizzato data_files param:

setup(
    name='blabla', 
    version='1.0', 
    packages=find_packages(), 
    entry_points={'scrapy': ['settings = blabla.settings']}, 
    zip_safe=False, 
    include_package_data=True, 
    data_files=[(root, [os.path.join(root, f) for f in files]) 
     for root, _, files in itertools.chain(os.walk('monitoring'), 
               os.walk('blabla/data'))], 
    install_requires=[ 
     "Scrapy>=0.22", 
    ], 
    extras_require={ 
     'Somemodule': ["numpy"], 
    } 
) 

Questo è un po 'strano perché il codice è i dati, in realtà ... ma ha funzionato per noi.

Grazie per l'attenzione. Risolto.