模拟生产代码

Mock in production code

我会尽量直截了当:

我是一名 Ruby 程序员,从 Python 开始,我正在尝试使用 Scrapy。我正在查看我公司从第三方收到的代码,有一件事破坏了我的 Scrapyd 部署(在云上):

ImportError: no module named mock

我已经在本地安装了,它在我的 requirements.txt 上,但是在部署过程中它正在破坏上游。准确地说,这是我在生产代码中 grep 引用 mock 的唯一地方:

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

有人能看到这条隧道尽头的光吗? 有谁知道你为什么要在生产代码上使用那个模拟(它应该做什么?)

谢谢=]

编辑 1:也许我应该澄清一些事情:在他们的 Scrapyd 界面中,他们有这个地方供开发人员上传 'Python eggs'。我不确定那是什么(听起来只是一个 Gemfile,或者...服务器导入的一组模块),但是我 运行 python setup.py bdist_egg 生成了这个蛋,我假设它包括所有依赖项(setup.py 对 Python 的新手来说有点混乱)。长话短说:我 运行 这个命令并将它上传到服务器的 Scrapyd 界面。所以,我无法访问任何 apt-get 甚至 ssh 到 Scrapyd 机器。

编辑 2:我无法访问 apt-get 在服务器上,这是一个普通的Scrapyd服务器。这个问题的答案被称为 'duplicate' 而不是 回答我的问题。

您应该创建依赖项的蛋,而不是整个项目的蛋。为此,首先克隆 mock 存储库:

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

然后构建蛋:

python setup.py bdist_egg

并在dist文件夹下找到要使用的egg。上传到Scrapyd服务器,应该满足依赖关系。