Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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_appserver.py:watcher_ignore_re flag";不是JSON可序列化的“;_Python_Google App Engine_Development Environment - Fatal编程技术网

Python 谷歌应用程序引擎dev_appserver.py:watcher_ignore_re flag";不是JSON可序列化的“;

Python 谷歌应用程序引擎dev_appserver.py:watcher_ignore_re flag";不是JSON可序列化的“;,python,google-app-engine,development-environment,Python,Google App Engine,Development Environment,为什么我使用选项watcher\u ignore\u re运行dev\u appserver.py,我会收到一条错误消息,即正则表达式不可JSON序列化 这是开发服务器的一个bug吗?我是否不正确地使用此命令?下面打印了命令和调用堆栈 C:\Users\mes65\Documents\MyProject>"C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin\dev_appserver.py" ^ --watche

为什么我使用选项
watcher\u ignore\u re
运行
dev\u appserver.py
,我会收到一条错误消息,即正则表达式
不可JSON序列化

这是开发服务器的一个bug吗?我是否不正确地使用此命令?下面打印了命令和调用堆栈

C:\Users\mes65\Documents\MyProject>"C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin\dev_appserver.py" ^
    --watcher_ignore_re="(.*\.git|.*\.idea|tmp\.py)" ^
    "C:\Users\mes65\Documents\MyProject"
WARNING  2018-06-06 09:28:59,161 appinfo.py:1622] lxml version "2.3" is deprecated, use one of: "3.7.3"
INFO     2018-06-06 09:28:59,187 devappserver2.py:120] Skipping SDK update check.
Traceback (most recent call last):
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\dev_appserver.py", line 96, in <module>
    _run_file(__file__, globals())
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\dev_appserver.py", line 90, in _run_file
    execfile(_PATHS.script_file(script_name), globals_)
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\devappserver2.py", line 454, in <module>
    main()
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\devappserver2.py", line 442, in main
    dev_server.start(options)
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\devappserver2.py", line 163, in start
    bool(ssl_certificate_paths), options)
  File "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\metrics.py", line 166, in Start
    self._cmd_args = json.dumps(vars(cmd_args)) if cmd_args else None
  File "C:\Python27\lib\json\__init__.py", line 244, in dumps
    return _default_encoder.encode(obj)
  File "C:\Python27\lib\json\encoder.py", line 207, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "C:\Python27\lib\json\encoder.py", line 270, in iterencode
    return _iterencode(o, 0)
  File "C:\Python27\lib\json\encoder.py", line 184, in default
    raise TypeError(repr(o) + " is not JSON serializable")
TypeError: <_sre.SRE_Pattern object at 0x00000000063C2188> is not JSON serializable
C:\Users\mes65\Documents\MyProject>“C:\Program Files(x86)\Google\Cloud SDK\Google Cloud SDK\bin\dev\u appserver.py”^
--watcher_ignore_re=“(.*\.git.*\.idea|tmp\.py)”^
“C:\Users\mes65\Documents\MyProject”
警告2018-06-06 09:28:59161 appinfo.py:1622]lxml版本“2.3”已被弃用,请使用以下选项之一:“3.7.3”
信息2018-06-06 09:28:59187 devappserver2.py:120]正在跳过SDK更新检查。
回溯(最近一次呼叫最后一次):
文件“C:\Program Files(x86)\Google\Cloud SDK\Google Cloud SDK\platform\Google\u appengine\dev\u appserver.py”,第96行,在
_运行\u文件(\uuuu文件,globals())
文件“C:\Program Files(x86)\Google\Cloud SDK\Google Cloud SDK\platform\Google\u appengine\dev\u appserver.py”,第90行,在运行文件中
execfile(_PATHS.script_文件(script_名称),全局文件)
文件“C:\Program Files(x86)\Google\Cloud SDK\Google Cloud SDK\platform\Google\u appengine\Google\appengine\tools\devappserver2\devappserver2.py”,第454行,在
main()
文件“C:\Program Files(x86)\Google\Cloud SDK\Google Cloud SDK\platform\Google\u appengine\Google\appengine\tools\devappserver2\devappserver2.py”,主目录第442行
dev_server.start(选项)
文件“C:\Program Files(x86)\Google\Cloud SDK\Google Cloud SDK\platform\Google\u appengine\Google\appengine\tools\devappserver2\devappserver2.py”,第163行,在开始处
bool(ssl证书路径),选项)
文件“C:\Program Files(x86)\Google\Cloud SDK\Google Cloud SDK\platform\Google\u appengine\Google\appengine\tools\devappserver2\metrics.py”,第166行,在开始处
self._cmd_args=json.dumps(vars(cmd_args))如果cmd_args没有其他值
文件“C:\Python27\lib\json\\uuuu init\uuuu.py”,第244行,转储
返回默认编码器编码(obj)
文件“C:\Python27\lib\json\encoder.py”,第207行,在encode中
chunks=self.iterencode(o,\u one\u shot=True)
文件“C:\Python27\lib\json\encoder.py”,第270行,在iterencode中
返回_iterencode(o,0)
默认情况下,文件“C:\Python27\lib\json\encoder.py”,第184行
raise TypeError(repr(o)+“不可JSON序列化”)
TypeError:不可序列化JSON

这似乎是dev_appserver2内置的谷歌分析代码的问题(第316行或周围的谷歌云sdk\platform\google_appengine\google\appengine\tools\devappserver2\devappserver2.py)。它希望将您的所有命令行选项发送到google analytics。如果通过添加命令行选项删除分析客户端id--google_analytics_client_id=(注意:“=”没有任何以下值),appserver将不会调用google analytics代码,因为它正在尝试对SRE对象进行JSON序列化,但失败了。但是,由于您使用的是Windows,我发现--watcher\u ignore\u re即使在您解决了这个问题后也无法工作

文件_watcher.py中有一条注释


TODO:b/33178251-添加对windows的监视者忽略支持。我在windows上也遇到了这个可用性问题,真的很失望。我试图找到一些变通办法,但没有找到任何合适的办法

最后,我决定自己为Windows实现support watcher\u ignore\u re。我把所需的更改放在

如果用几个词来描述它们:

  • 添加
    \u watcher\u ignore\u re
    \u skip\u files\u re
    属性及其设置程序
  • 从google.appengine.tools.devappserver2 import watcher\u common中添加导入语句
    ,并在新创建的
    def\u路径中使用它
  • 在将附加更改添加到观察者更改的文件之前,过滤附加更改
  • 为了解决上述不可序列化regex属性的问题,我们应该将它们从序列化字典中删除。对此的修复将作为后续提交添加,并可在
    metrics.py:185-193
    中检查


    我希望它能帮助其他人享受在Windows上开发GAE的乐趣:)

    FWIW,在linux上传递相同的
    --watcher|u ignore_re=“(.*.git|.*.idea | tmp\.py)”
    参数就可以了。可能是windows特定的问题。如果您还没有这样做,请检查您的报价。删除或修改您的arg,包括
    watcher\u ignore\u re
    ,看看您是否能找出哪一个arg片段恰恰是令人不快的一个。@DanCornilescu,请您详细解释一下您在评论中解释的内容,并将其作为答案发布?谢谢。同样的事情也发生在我身上,比如Mac上的“--watcher\u ignore.*/frontend/*.”。SDK版本204.0.0。这是一个新问题,在我使用以前版本的SDK时,它工作正常。我恢复到SDK版本200.0.0,该问题已得到修复。