小编ale*_*ian的帖子

在通过docker-compose运行时,Flask CLI抛出“ OSError:[Errno 8] Exec格式错误”

我正在使用自定义脚本运行Flask应用程序。还是尝试,无论如何。

我在Windows 10上,应用程序应在Linux Docker容器中使用以下命令运行:

docker-compose up api
Run Code Online (Sandbox Code Playgroud)

Docker-compose是version 1.23.2。在dockerfile中,该api服务通过以下命令运行:

command: python manage.py run --host "0.0.0.0" --with-threads
Run Code Online (Sandbox Code Playgroud)

在尝试启动时,我看到了异常

OSError: [Errno 8] Exec format error: '/api/manage.py'
Run Code Online (Sandbox Code Playgroud)

我最初以为这将是“可怕的Windows行尾”,再次给我,但是dos2unix在我的所有源文件上运行都无法解决问题。

如何避免此错误?


manage.py

docker-compose up api
Run Code Online (Sandbox Code Playgroud)

完整回溯

api_1          | Traceback (most recent call last):
api_1          |   File "manage.py", line 22, in <module>
api_1          |     cli()
api_1          |   File "/usr/local/lib/python3.6/site-packages/click/core.py", line 764, in __call__
api_1          |     return self.main(*args, **kwargs)
api_1          |   File "/usr/local/lib/python3.6/site-packages/flask/cli.py", line 380, in main
api_1          | …
Run Code Online (Sandbox Code Playgroud)

python windows flask docker docker-compose

27
推荐指数
3
解决办法
2万
查看次数

当 python 模拟同时具有返回值和副作用列表时会发生什么?

我无法理解某些测试代码中发生的情况。它看起来像这样:

import pytest
from unittest.mock import MagicMock
from my_module import MyClass

confusing_mock = MagicMock(
    return_value=b"",
    side_effect=[
        ConnectionError(),
        b"another_return_value?",
        b"another_another_return_value?"
    ])

mocked_class = MyClass()
monkeypatch.setattr(mocked_class, "method_to_call_thrice", confusing_mock)
Run Code Online (Sandbox Code Playgroud)

我知道:

  • side_effect 是在调用模拟时要调用的函数
  • 但是如果side_effect是可迭代的,那么“对模拟的每次调用都将返回可迭代的下一个值”(感谢pytest docs
  • 文档还说,如果传递给的函数side_effect 返回DEFAULT,则模拟将从 return_value

但这是我没有得到的:

  • 当我为发生什么一个副作用名单返回值
  • 我应该在每次调用 时看到MyClass.method_to_call_thrice什么?

python unit-testing mocking pytest python-unittest.mock

8
推荐指数
1
解决办法
4684
查看次数