2015-04-08 80 views
0

我會盡力直接在這裏:模擬生產代碼

我是一個Ruby程序員,從Python開始,我正在嘗試使用Scrapy。我尋找到從第三方收到我公司的代碼,而有一件事是打破我的Scrapyd部署(在雲):

ImportError: no module named mock 

我在本地安裝,它在我的requirements.txt,但在部署過程中,它正在打破上游。準確地說,這是我grep'd唯一的地方嘲笑生產代碼的參考:

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

任何人都可以看到一些光在這個隧道的盡頭? 沒有人有任何想法,爲什麼你會使用模擬在生產代碼

感謝=]

EDIT 1(又是什麼應該做的?):也許我要澄清的東西:他們Scrapyd接口,他們有這個地方讓開發者上傳'Python蛋'。我不確定這是什麼(聽起來像只是一個Gemfile,或者是一組服務器導入的模塊),但我運行python setup.py bdist_egg來生成這個蛋,我想它包含所有的依賴關係(setup .py對於Python的新手來說有點令人困惑)。長話短說:我運行這個命令並將其上載到服務器的Scrapyd接口。因此,我無法訪問Scrapyd機器的apt-get甚至ssh。

EDIT 2:我要用不上apt-get的在服務器上,這是一個正常的Scrapyd服務器。這個答案被稱爲'重複'不是回答我的問題。

+0

可能重複的[ImportError:No Module named simplejson](http://stackoverflow.com/questions/2604841/importerror-no-module-named-simplejson) –

+1

如果這是唯一的地方,那麼導入的位置是提出這個錯誤? –

+0

對不起,我的意思是:唯一被調用的地方。蜘蛛裏有一個「進口模擬」。 –

回答

2

您應該創建依賴關係的蛋,而不是整個項目的蛋。要做到這一點,首先克隆mock庫:

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

然後建立雞蛋:

python setup.py bdist_egg 

,並找到dist文件夾下使用雞蛋。上傳到Scrapyd服務器,它應該滿足依賴性。

+0

由於我現在的錯誤響應已更改爲「ImportError:No module named newspaper」,我將對所有模塊執行相同的過程,並且我接受此答案。非常感謝! –

+0

如果somone會考慮詳細說明一個問題:這是在Python中管理服務器端依賴關係的最佳方式嗎?我的意思是,在Ruby中,我們發送Gemfile並且Bundler將自動查找我們的依賴關係。是不是有點少...痛苦?謝謝=] –