質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1920閲覧

ローカルでは動作するアプリが、pythonanywhere上ではエラーがでます

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/07/28 05:03

前提・実現したいこと

pythonを使用してチャットbotを作成しています。
天気予報を取得して回答する機能を実装したところ、ローカルサーバーではうまく動作するのですが、pythonanywhere上では以下のエラーログが出ます。

発生している問題・エラーメッセージ

2019-07-28 13:39:03,057: Internal Server Error: /talking/
Traceback (most recent call last):
File "/home/elis1107/.virtualenvs/myenv/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/home/elis1107/.virtualenvs/myenv/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/home/elis1107/.virtualenvs/myenv/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/elis1107/.virtualenvs/myenv/lib/python3.7/site-packages/django/views/generic/base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "/home/elis1107/.virtualenvs/myenv/lib/python3.7/site-packages/django/views/generic/base.py", line 97, in dispatch
return handler(request, *args, **kwargs)
File "/home/elis1107/elis/talk/views.py", line 27, in post
response = elis.dialogue(value)
File "/home/elis1107/elis/talk/elis.py", line 32, in dialogue
self.dictionary.study(input, parts)
File "/home/elis1107/elis/talk/dictionary.py", line 69, in study
self.study_pattern(input, parts)
File "/home/elis1107/elis/talk/dictionary.py", line 81, in study_pattern
m = re.search(ptn_item.pattern, word)
File "/home/elis1107/.virtualenvs/myenv/lib/python3.7/re.py", line 183, in search
return _compile(pattern, flags).search(string)
File "/home/elis1107/.virtualenvs/myenv/lib/python3.7/re.py", line 286, in _compile
p = sre_compile.compile(pattern, flags)
File "/home/elis1107/.virtualenvs/myenv/lib/python3.7/sre_compile.py", line 764, in compile
p = sre_parse.parse(p, flags)
File "/home/elis1107/.virtualenvs/myenv/lib/python3.7/sre_parse.py", line 930, in parse
p = _parse_sub(source, pattern, flags & SRE_FLAG_VERBOSE, 0)
File "/home/elis1107/.virtualenvs/myenv/lib/python3.7/sre_parse.py", line 426, in _parse_sub
not nested and not items))
File "/home/elis1107/.virtualenvs/myenv/lib/python3.7/sre_parse.py", line 651, in _parse
source.tell() - here + len(this))
re.error: nothing to repeat at position 0

該当のソースコード

python

1from django.views.generic import TemplateView 2from django.shortcuts import render 3from django.http.response import HttpResponse 4from elis.forms import TalkForm 5from talk.elis import Elis 6from talk.weather import WeatherResponder 7import json 8import random 9import datetime 10import re 11 12class ElisView(TemplateView): 13 def __init__(self): 14 self.params = { 15 'title':'エリスちゃんとおしゃべり', 16 'message': '', 17 'form': TalkForm(), 18 'emotion': 0 19 } 20 21 def get(self, request): 22 return render(request, 'elis/index.html', self.params) 23 24 def post(self, request): 25 elis = Elis('elis') 26 value = request.POST.get('speak',False) 27 response = elis.dialogue(value) 28 log = [] 29 place = re.sub('の天気予報教えて','', value) 30 weather = WeatherResponder() 31 w_response = weather.is_weather(place) 32 33 34 def writeLog(str): 35 log.append('>' + value + '\n') 36 log.append('>エリス:' + response + '\n') 37 with open('talk/dics/log.txt', 'a', encoding='utf_8') as f: 38 f.writelines(log) 39 40 if '天気予報教えて' in request.POST.get('speak'): 41 self.params['message'] = 'エリス:' + w_response 42 return HttpResponse(json.dumps(self.params['message']),content_type='application/json; charset=UTF-8',status=None) 43 44 45 if request.POST.get('speak') == '': 46 self.params['message'] = 'エリス:用があるなら何か言って' 47 return HttpResponse(json.dumps(self.params['message']),content_type='application/json; charset=UTF-8',status=None) 48 elif request.POST.get('speak') == '今何時?': 49 whattime = random.randint(0,1) 50 dt_now = datetime.datetime.now() 51 52 if whattime == 0: 53 self.params['message'] = 'エリス:そうねだいたいね' 54 else: 55 self.params['message'] = 'エリス:今は' + str(dt_now.hour) + '時' + str(dt_now.minute) + '分だよ' 56 57 return HttpResponse(json.dumps(self.params['message']),content_type='application/json; charset=UTF-8',status=None) 58 else: 59 self.params['message'] = 'エリス:' + response 60 writeLog(str) 61 elis.save() 62 #study_random(str) 63 return HttpResponse(json.dumps(self.params['message']),content_type='application/json; charset=UTF-8',status=None)

試したこと

reを使っているので*が混同されてるのかと考えて、ワイルドカードでimportしていたのをやめてみましたが解決しませんでした。
一度pythonanywhere上の該当ファイルを削除してローカルで実行していたファイルをアップロードしてもみましたがだめでした。
どうすればよいのか教えていただければ幸いです。

補足情報(FW/ツールのバージョンなど)

python3.7.1
django2.1.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

pythonanywhereの利用できるapiホワイトリストの対象ではなかったため動作しない状態でした。
問い合わせたところ対応していただき、動作するようになりました。

投稿2020/03/24 00:05

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問