部署到pythonanywhere时,我的django应用需要进行哪些更改?错误指向无处

时间:2019-06-27 11:36:17

标签: django wsgi pythonanywhere

使用S3作为存储来部署django网站,该网站在pythonanywhere上可以在本地良好运行,这会产生一个奇怪的错误,我无法在Google上找到以下解决方案:

“ TypeError:需要一个类似字节的对象,而不是'str'”

我做错了什么?

我尝试将环境变量排除在settings.env(aws键,secret_key等)之外,并直接在我的settings.py应用程序中设置了它们。 +我能找到的每条建议,但还是一样:(

这是我的/var/www/username_pythonanywhere_com_wsgi.py:

# +++++++++++ DJANGO +++++++++++
# To use your own Django app use code like this:
import os
import sys

from dotenv import load_dotenv

project_folder = os.path.expanduser('~/portfolio_pa/WEB')  # adjust as appropriate
load_dotenv(os.path.join(project_folder, 'settings.env'))

# assuming your Django settings file is at '/home/myusername/mysite/mysite/settings.py'
path = '/home/corebots/portfolio_pa'
if path not in sys.path:
    sys.path.insert(0, path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'WEB.settings'

## Uncomment the lines below depending on your Django version
###### then, for Django >=1.5:
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
###### or, for older Django <=1.4
#import django.core.handlers.wsgi
#application = django.core.handlers.wsgi.WSGIHandler()

我希望该网站能够像在本地一样正常运行。

1 个答案:

答案 0 :(得分:0)

Boto库没有很好的Python3支持。 boto bugtracker中已知此特定问题:https://github.com/boto/boto/issues/3837

解决此问题的最佳方法是使用boto3,它具有不错的Python3支持,并且通常是受支持最多的适用于Python的AWS开发工具包。

它在您的本地计算机上运行而在生产环境上不运行的原因是pythonanywhere设置似乎正在使用代理来触发此不兼容的boto代码。请参阅实际的调用代码:https://github.com/boto/boto/blob/master/boto/connection.py#L747

您的错误回溯确认了这一点。

不幸的是,我对django-photologue并不熟悉,但是简单的观察并不能说明它强烈依赖于boto3。也许我错了。

我仍然认为最好的方法是使用boto3。作为备份策略,您可以为boto修复此问题并安装它,而不是安装PyPI上的官方版本:https://github.com/boto/boto/pull/3699