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

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

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

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

Q&A

解決済

3回答

4170閲覧

pyinstallerでのexe化に失敗します

sino_arr

総合スコア8

Python 3.x

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

0グッド

0クリップ

投稿2018/07/03 04:21

Pyinstallerを使って.pyファイルを.exeとして生成したいのですが
Recursion error : maximum recursion depth exceededと表示されてエラーになります
Anaconda Promptで入力しています

Recursion error : maximum recursion depth exceeded

ソースコードは単調減少する2曲線によって囲まれた領域に内接する正方形の最大値を求めるためのプログラムです。

該当のソースコード

Pthhon3.6

1from __future__ import division 2import numpy as np 3import matplotlib.pyplot as plt 4import sys 5sys.setrecursionlimit(50000) 6 7 8x1, y1 = np.loadtxt('./SNMmeasure_1.txt',comments='#',unpack='True') 9y2, x2 = np.loadtxt('./SNMmeasure_2.txt',comments='#',unpack='True') 10 11 12 13def intercept(p1,p2,p3,p4): 14 15 16 17 def line(pA,pB): 18 19 #2点pA,pBを通る直線を y=Ax+B で定義 20 A = (pB[1]-pA[1])/(pB[0]-pA[0]) 21 B = pA[1] - A*pA[0] 22 23 return A, B 24 25 def intersection(L1,L2): 26 #2直線L1,L2の交点を求める 27 #Lはy=Ax+Bの表記からL(A,B)で定義する 28 29 x = -(L2[1]-L1[1])/(L2[0]-L1[0]) 30 y = L1[0]*x + L1[1] 31 32 return x,y 33 34 35 L1 = line([p1[0],p1[1]],[p2[0],p2[1]]) 36 L2 = line([p3[0],p3[1]],[p4[0],p4[1]]) 37 38 39 40 R = intersection(L1,L2) 41 return R 42 43 44 45arrayintersection = [] 46arraydistance = [] 47array_i = [] 48 49i = 0 50while (i < len(x1)-1): 51 j = 0 52 while(j < len(x1)-1): 53 p1 = (x2[j],y2[j]) 54 p2 = (x2[j+1],y2[j+1]) 55 p3 = (x2[j],x2[j]-x1[i]+y1[i]) 56 p4 = (x2[j+1],x2[j+1]-x1[i]+y1[i]) 57 58 R = intercept(p1,p2,p3,p4) 59 60 61 62 if (abs((p1[0]+p2[0])/2 - R[0]) <= abs(p2[0]-p1[0])/2 ): #領域内で交差する条件:AcC 63 64 65 d = np.sqrt(((R[0]-x1[i])**2 + (R[1]-y1[i])**2)/2) 66 arrayintersection.append(R) 67 arraydistance.append(d) 68 array_i.append(i) 69 70 j += 1 71 72 i += 1 73 74 75 76 77 78 79fig = plt.figure(figsize=(6, 6)) 80plt.plot(x1, y1,'c') 81plt.plot(x2, y2,'c') 82 83 84print('SNM '+str(max(arraydistance))) 85 86 87k0 = np.where(arraydistance == max(arraydistance)) 88 89k = int(k0[0]) 90 91R_k = arrayintersection[k] 92 93x_dline = (R_k[0],x1[k]) 94A_dline = (y1[k]-R_k[1])/(x1[k]-R_k[0]) 95y_dline = (A_dline)*(x_dline-x1[k])+y1[k] 96 97plt.plot(x_dline,y_dline,'k',linestyle="dashed") 98plt.xlabel('V_in (V)') 99plt.ylabel('V_out (V)') 100plt.title('Static noise margin') 101plt.text(0.125,0.150,'SNM '+ str(round((1000*max(arraydistance)),1)) +' (mV)') 102 103 104#print(max(arraydistance)) 105 106 107

試したこと

sys.setrecursionlimitで再帰の上限を50000に引き上げました
初期値は1000らしいのですが5000,10000,25000と順に引き上げましたがダメでした

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

Python3.6
Win7
Python初めて5日くらいの初心者です
回答くださっても理解できないかもしれないですがよろしくお願いします

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

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

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

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

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

guest

回答3

0

エラーメッセージを読みましょう

再帰しすぎです

投稿2018/07/03 04:26

y_waiwai

総合スコア87719

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

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

sino_arr

2018/07/03 05:22

再帰というのは関数の定義でその関数を呼び出すことというかなり曖昧な認識なのですがそれ以外にもあったりしますか? 具体的にソースコードのどの部分か教えていただけるとありがたいです
guest

0

ベストアンサー

pyinstaller creating EXE RuntimeError: maximum recursion depth exceeded while calling a Python object - Stack Overflow

が参考になるかもしれません。(要約:spec fileをいじれ)

それか、こっちかも。(要約:バージョンとかの問題だからダウングレードしてみて)

RecursionError: maximum recursion depth exceeded - python 3.6 issue · Issue #2919 · pyinstaller pyinstaller · GitHub

投稿2018/07/03 04:58

編集2018/07/03 05:00
hayataka2049

総合スコア30933

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

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

0

同じエラーが出ましたが、specファイルを弄るやり方で解決しました。

投稿2018/08/09 03:41

dinosauria123

総合スコア25

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問