python - Freeze 方法在 Frozen Flask 中遇到文件存在错误
问题描述
有谁知道如何使用冷冻瓶???我需要帮助制作网站并将其托管在 github 上。我在 github 上托管它没有问题,但是我在实际的 freeze() 过程中遇到了问题。它工作了一点,但后来我遇到了 FileExistsError。但我没有任何同名的文件。views.py 路由设置得如此笼统,以至于它需要 state/state-abbreviation/other。
from flask_frozen import Freezer
from flask import Flask
from website import app
freezer = Freezer(app)
app.config.from_pyfile('settings.py') #use this to not delete files after freezing, and move all static files into project directory for GH to see.
if __name__ == '__main__':
freezer.freeze()
# app.run(debug=True)
from flask import render_template, Blueprint, url_for
@core.route('/')
def index():
return render_template("index.html", states=states_array, other=Other_Resources)
@core.route('/state/<state_code>')
def state(state_code=None):
if state is None:
raise ValueError('No state given')
title = states_dict[state_code]
return render_template('state_home_page.html', title=title, states=states_array, code=state_code, other=Other_Resources)
@core.route('/state/<state_code>/donate')
def state_donate(state_code=None):
title = states_dict[state_code]
try:
data = state_to_category['Donate'][state_code]
except KeyError:
data = []
return render_template('state_donate.html', title=title, states=states_array, data=data, code=state_code, other=Other_Resources)
@core.route('/state/<state_code>/organizations')
def state_org(state_code=None):
title = states_dict[state_code]
try:
data = state_to_category['Organization'][state_code]
except KeyError:
data = []
return render_template('state_org.html', title=title, states=states_array, data=data, code=state_code, other=Other_Resources)
@core.route('/state/<state_code>/blackbusiness')
def state_biz(state_code=None):
title = states_dict[state_code]
try:
data = state_to_category['Business'][state_code]
except KeyError:
data = []
return render_template('state_biz.html', title=title, states=states_array, data=data, code=state_code, other=Other_Resources)
@core.route('/State_list')
def State_list():
return render_template("state_list.html", states=states_array, other=Other_Resources)
@error_pages.app_errorhandler(404)
def error_404(error):
return render_template('error_pages/404.html', states=states_array), 404
而且我认为它在冻结 state/ca/ 之后会搞砸,然后尝试冻结 state/ca/donate 等等。
这是我的回购https://github.com/mrodriguez3313/Support-bipoc请检查一下,以便您可以分叉并自己尝试。我有一个分支,我在其中进行了测试,称为 MAR-freezingapp。你可以看到我所做的尝试。Frozen Flask 文档听起来应该“正常工作”,当您运行 .freeze() 方法时,它会在 build/ 文件夹中为您创建静态文件。但是当我跑步时python app.py
这些是我得到的错误
/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py:199: MimetypeMismatchWarning: Filename extension of u'NationalOrganizations' (type application/octet-stream) does not match Content-Type: text/html; charset=utf-8
return set(page.url for page in self.freeze_yield())
/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py:199: MimetypeMismatchWarning: Filename extension of u'NationalPetitions' (type application/octet-stream) does not match Content-Type: text/html; charset=utf-8
return set(page.url for page in self.freeze_yield())
/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py:199: MimetypeMismatchWarning: Filename extension of u'NationalDonate' (type application/octet-stream) does not match Content-Type: text/html; charset=utf-8
return set(page.url for page in self.freeze_yield())
/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py:199: MimetypeMismatchWarning: Filename extension of u'State_list' (type application/octet-stream) does not match Content-Type: text/html; charset=utf-8
return set(page.url for page in self.freeze_yield())
/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py:199: MimetypeMismatchWarning: Filename extension of u'ca' (type application/octet-stream) does not match Content-Type: text/html; charset=utf-8
return set(page.url for page in self.freeze_yield())
/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py:199: MimetypeMismatchWarning: Filename extension of u'mn' (type application/octet-stream) does not match Content-Type: text/html; charset=utf-8
return set(page.url for page in self.freeze_yield())
/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py:199: MimetypeMismatchWarning: Filename extension of u'tx' (type application/octet-stream) does not match Content-Type: text/html; charset=utf-8
return set(page.url for page in self.freeze_yield())
/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py:199: MimetypeMismatchWarning: Filename extension of u'ga' (type application/octet-stream) does not match Content-Type: text/html; charset=utf-8
return set(page.url for page in self.freeze_yield())
/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py:199: MimetypeMismatchWarning: Filename extension of u'la' (type application/octet-stream) does not match Content-Type: text/html; charset=utf-8
return set(page.url for page in self.freeze_yield())
/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py:199: MimetypeMismatchWarning: Filename extension of u'donate' (type application/octet-stream) does not match Content-Type: text/html; charset=utf-8
return set(page.url for page in self.freeze_yield())
Traceback (most recent call last):
File "app.py", line 9, in <module>
freezer.freeze()
File "/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py", line 199, in freeze
return set(page.url for page in self.freeze_yield())
File "/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py", line 199, in <genexpr>
return set(page.url for page in self.freeze_yield())
File "/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py", line 183, in freeze_yield
new_filename = self._build_one(url)
File "/usr/local/lib/python2.7/dist-packages/flask_frozen/__init__.py", line 344, in _build_one
os.makedirs(dirname)
File "/usr/lib/python2.7/os.py", line 157, in makedirs
mkdir(name, mode)
OSError: [Errno 17] File exists: '/c/Users/marco/Documents/Udemy/WebDev/SiteProject/state/ca'
我尝试查看是否可以将 .freeze() 包装在 try/except 中,但它仍然停止。也许我做得不对?我尝试运行 freeze.run(debug=True),但它也只是因相同的错误而中断。我仍然可以使用flask run
. 提前感谢您的帮助!
解决方案
我克隆了您的项目,并且在core/views.py
. 我的项目遇到了类似的问题,在我的路线中添加斜杠解决了这个问题。更多相关讨论:https ://www.reddit.com/r/flask/comments/335cyi/a_problem_with_frozenflask/
Frozen Flask 也不能保证它在任何情况下都“正常工作”。例如,在文档中,他们提到在某些情况下需要编写 url 生成器。(https://pythonhosted.org/Frozen-Flask/#url-generators),尽管这似乎与您的应用程序无关。
推荐阅读
- c++ - 读取访问冲突 C++
- gdb - 使用 gdbserver --multi 运行文件
- amazon-web-services - 不使用堡垒的另一个 vpc 的私有子网中的 ssh ec2 实例
- javascript - .includes(或我应用的任何其他方法)不是函数
- python - 如何通过使用 n 个元素的总和来减少 numpy 数组的维度?
- java - 是否可以在 TestNG 数据提供程序类中注入变量
- nlp - 如何使用 NLP(如 fasttext)获取文本的一般类别?
- kotlin - 递归调用 Kotlin 挂起函数是否安全?
- python - 神经网络基础理解与可视化
- ios - 处理改变格式的 API