CS50财务-NameError:未定义名称“ self”

时间:2019-07-10 11:28:03

标签: python cs50

运行烧瓶时出现以下错误消息,我得到500 Internal Server Error

  

NameError:名称'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

2 个答案:

答案 0 :(得分: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(self, *args, **kwargs):
    • 对于下一个(_before(*args, **kwargs)),作者:_before(self, *args, **kwargs)

让我知道它是如何工作的。

答案 1 :(得分:0)

该错误已由CS50人员修复。

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

sudo pip3 install cs50 --upgrade