【问题标题】:CS50 Finance - NameError: name 'self' is not definedCS50 财务 - NameError:未定义名称“self”
【发布时间】:2019-07-10 11:28:03
【问题描述】:

我在运行烧瓶时收到500 Internal Server Error 并显示以下错误消息:

NameError: name 'self' 未定义

昨天我的代码运行良好,我没有做任何更改。错误消息列出了已在分发代码中导入的 python 文件。也许背景发生了变化?

192.168.234.116 - - [10/Jul/2019 11:15:56] "GET / HTTP/1.0" 500 -
Error on request:
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/werkzeug/serving.py", line 303, in run_wsgi
    execute(self.server.app)
  File "/usr/local/lib/python3.7/site-packages/werkzeug/serving.py", line 291, in execute
    application_iter = app(environ, start_response)
  File "/home/ubuntu/environment/pset8/finance/application.py", line 13, in <module>
    app = Flask(__name__)
  File "/usr/local/lib/python3.7/site-packages/cs50/flask.py", line 54, in _after
    self.wsgi_app = ProxyFix(self.wsgi_app, x_proto=1)
NameError: name 'self' is not defined

【问题讨论】:

  • 请在您的问题中添加代码 sn-ps 以及堆栈跟踪
  • 欢迎来到 Stack Overflow。请阅读the help pages,获取the SO tour,了解how to ask good questions,以及this question checklist。最后请学习如何创建minimal reproducible example 向我们展示。
  • 即使这似乎与您的代码无关,您也应该发布一个 mcveapplication.py 的最小部分运行时,错误会变得可见,否则您可能会因未遵循指南而关闭问题(即使问题提出了有效点)。
  • @CristiFati 谢谢你,我会采纳你的建议的。

标签: python cs50


【解决方案1】:

这是一个 CS50 错误(回归)。

我已经提交了[GitHub]: cs50/python-cs50 - Added the 1st (required) argument (self) to flask.Flask's initializer,它被关闭了(因为它不完整-因为我提交的时候太匆忙了,错过了一个地方),并且创建了[GitHub]: Fix missing self arguments in Flask __init__ replacement并且合并。不确定它什么时候会在市场上上市(PyPI,所以你可以简单地pip install 它),但你可以从 GitHub 下载源代码并覆盖你的。

作为替代方案,您可以下载补丁并在本地应用更改。检查[SO]: Run/Debug a Django application's UnitTests from the mouse right click context menu in PyCharm Community Edition? (@CristiFati's answer)修补utrunner部分)了解如何应用补丁(基本上,以一个“+”符号开头的每一行都进入,并且以 一个“-” 符号开头的每一行都会熄灭)。
或者(考虑到变化不仅仅是微不足道的事实),您可以:

  1. 打开 flask.py 文件(在您的情况下:“/usr/local/lib/python3.7/site-packages/cs50/flask.py” ) 在文本编辑器中
  2. 转到第 #54 行(在你的情况下,在我的情况下是 52)
  3. 替换当前内容(更改前导SPACE):
    • 对于当前行 (def _after(*args, **kwargs):) 由:def _after(<strong>self,</strong> *args, **kwargs):
    • 下一个 (_before(*args, **kwargs)) 来自:_before(<strong>self,</strong> *args, **kwargs)

@EDIT0

@kaczifant 已经体验过,修复程序已经可供下载pip3 install cs50 --upgrade

【讨论】:

    【解决方案2】:

    该错误已由 CS50 工作人员修复。

    选择 CS50 IDE > 注销,然后在 ide.cs50.io 重新登录。或者,您可以运行:

    sudo pip3 install cs50 --upgrade
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      • 2017-11-20
      • 2014-01-25
      • 1970-01-01
      • 2018-01-24
      • 1970-01-01
      相关资源
      最近更新 更多