Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python dev#u appserver无法在Ubuntu docker容器上启动(ValidationError:Value';None';for application与表达式不匹配)_Python_Google App Engine_Ubuntu 16.04 - Fatal编程技术网

Python dev#u appserver无法在Ubuntu docker容器上启动(ValidationError:Value';None';for application与表达式不匹配)

Python dev#u appserver无法在Ubuntu docker容器上启动(ValidationError:Value';None';for application与表达式不匹配),python,google-app-engine,ubuntu-16.04,Python,Google App Engine,Ubuntu 16.04,我在升级docker容器后开始看到这个问题。我找不到为app engine使用旧软件包的方法。使用options=157.x.y获取旧版本在apt-get中不起作用 故障日志: Traceback (most recent call last): File "/usr/lib/google-cloud-sdk/platform/google_appengine/dev_appserver.py", line 103, in <module> _run_file(__fil

我在升级docker容器后开始看到这个问题。我找不到为app engine使用旧软件包的方法。使用options=157.x.y获取旧版本在
apt-get
中不起作用

故障日志:

Traceback (most recent call last):
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/dev_appserver.py", line 103, in <module>
    _run_file(__file__, globals())
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/dev_appserver.py", line 97, in _run_file
    execfile(_PATHS.script_file(script_name), globals_)
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 322, in <module>
    main()
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 310, in main
    dev_server.start(options)
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 106, in start
    env_variables=parsed_env_variables)
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/application_configuration.py", line 851, in __init__
    env_variables)
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/application_configuration.py", line 131, in __init__
    self._config_path)
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/application_configuration.py", line 443, in _parse_configuration
    config.application = self._forced_app_id
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/api/validation.py", line 361, in __setattr__
    value = self.GetValidator(key)(value, key)
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/api/validation.py", line 599, in __call__
    return self.Validate(value, key)
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/api/validation.py", line 881, in Validate
    return self.validator(value, key)
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/api/validation.py", line 599, in __call__
    return self.Validate(value, key)
  File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/api/validation.py", line 955, in Validate
    '\'%s\'' % (value, key, self.re.pattern))
google.appengine.api.validation.ValidationError: Value 'None' for application does not match expression '^(?:(?:[a-z\d\-]{1,100}\~)?(?:(?!\-)[a-z\d\-\.]{1,100}:)?(?!-)[a-z\d\-]{0,99}[a-z\d])$'

我的dev_appserver版本也开始这样做

我深入研究了代码,发现参数解析器将一个空的app_id命令行参数设置为
“None”
(是的,这是一个字符串,不是一个非类型)。顺便说一句,app_id regex与大写字符不匹配,因此ValidationError会触发。(我很高兴是这样,否则它会悄悄地将我的应用程序命名为“无”,从而导致更棘手的错误)

我现在的解决方法是使用
-A
标志从命令行显式传递应用程序的名称。请注意,这将覆盖app.yaml配置中的
应用程序
变量

我原以为我的argparse版本坏了,但现在听起来像是一个dev_appserver bug

    FROM ubuntu:16.04
    RUN apt-get upgrade
    RUN apt-get update

    RUN apt-get install -y wget
    RUN apt-get install -y curl
    RUN apt-get install -y apt-transport-https

    RUN echo "deb https://packages.cloud.google.com/apt cloud-sdk-xenial main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list

    RUN wget -O - https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -

    RUN apt-get update
    RUN cat /etc/apt/sources.list.d/google-cloud-sdk.list

    RUN apt-get install -y google-cloud-sdk
    RUN apt-get install -y google-cloud-sdk-app-engine-python

    WORKDIR /mycodepath
    EXPOSE 8080