Макет в производственном коде

Я постараюсь быть прямо здесь:

Я программист Ruby, начиная с Python, и я пробую кое-что со Scrapy. Я просматриваю код, полученный моей компанией от третьей стороны, и одна вещь нарушает развертывание моего Scrapyd (в облаке):

ImportError: no module named mock

Я установил локально, он есть в моем файле requirements.txt, но он ломается вверх по течению, в процессе развертывания. Если быть точным, это единственное место, где я нашел ссылку на макет производственного кода:

def parse(self, response):
    ...
    with mock.patch('lxml.html', lxml.html):                            
        article.parse()
    ...

Может ли кто-нибудь увидеть свет в конце этого туннеля? Кто-нибудь знает, зачем использовать этот макет в производственном коде (и что он должен делать?)

Спасибо =]

РЕДАКТИРОВАТЬ 1: Может быть, мне следует кое-что прояснить: в их интерфейсе Scrapyd у них есть место, где разработчик может загружать «яйца Python». Я не уверен, что это такое (звучит как Gemfile или... пакет модулей, который должен быть импортирован сервером), но я запустил python setup.py bdist_egg, чтобы сгенерировать это яйцо, я полагаю, оно включает в себя все зависимости (настройка .py немного сбивает с толку новичков в Python). Короче говоря: я запустил эту команду и загрузил ее в интерфейс Scrapyd сервера. Итак, у меня нет доступа к apt-get или даже ssh к машине Scrapyd.

EDIT 2: у меня нет доступа к apt-get на сервере, это обычный сервер Scrapyd. Ответ, который называется «дублировать» на этот, не отвечает на мой вопрос.


person Thyago B. Rodrigues    schedule 08.04.2015    source источник
comment
возможный дубликат ImportError: No Module named simplejson   -  person Arseni Mourzenko    schedule 08.04.2015
comment
Если это единственное место, то где импорт, который вызывает эту ошибку?   -  person Martijn Arts    schedule 08.04.2015
comment
Извините, я имел в виду: единственное вызываемое место. в пауке есть import mock.   -  person Thyago B. Rodrigues    schedule 08.04.2015
comment
Куда ты побежал python setup.py bdist_egg? Его следует запустить в исходном каталоге mock, чтобы сгенерировать яйцо mock для загрузки.   -  person bosnjak    schedule 08.04.2015
comment
Я запустил его в корне проекта. У меня много зависимостей, некоторые в системном кеше, а некоторые, по-видимому, в папке src. Мне нужно запустить код в исходном каталоге каждого модуля зависимостей?   -  person Thyago B. Rodrigues    schedule 08.04.2015
comment
Да. Запустив его в корне вашего проекта, вы получите яйцо вашего проекта, а не яйцо зависимости. Вы должны собрать яйцо из исходного репозитория mock, а затем загрузить это яйцо для использования. Я добавлю более подробную информацию в ответ.   -  person bosnjak    schedule 08.04.2015


Ответы (1)


Вы должны создавать яйца зависимостей, а не всего вашего проекта. Для этого сначала клонируйте репозиторий mock:

hg clone https://code.google.com/p/mock/

Затем соберите яйцо:

python setup.py bdist_egg

и найдите яйцо, которое будет использоваться в папке dist. Загрузите его на сервер Scrapyd, и он должен удовлетворить зависимость.

person bosnjak    schedule 08.04.2015
comment
Поскольку мой ответ об ошибке теперь изменился на ImportError: Нет модуля с именем газета, я буду выполнять тот же процесс для всех модулей и принимаю этот ответ. Большое спасибо! - person Thyago B. Rodrigues; 08.04.2015
comment
Если кто-то захочет уточнить побочный вопрос: является ли это лучшим способом в Python для управления зависимостями на стороне сервера? Я имею в виду, что в Ruby мы отправляем Gemfile, и Bundler автоматически ищет наши зависимости. Разве нет чего-то менее... болезненного? Спасибо =] - person Thyago B. Rodrigues; 08.04.2015