홈>
UTM 좌표의 .txt 파일을 읽은 파이썬 3.6 프로그램을 작성한 다음 MatplotLib을 사용하여 그래프의 좌표를 표시 한 다음 바탕 화면의 .txt 파일에 좌표를 씁니다. 그것은 내가 사용하고있는 IDE 인 SPYDER에서 그것을 실행할 때 괜찮을 때 작동하지만, CX_FREEZE (Python 파일을 구축하여)를 사용하여 exe로 변환 할 때 다음과 같은 오류가 발생합니다. modulenotfoundError : 'matplotlib.backends.backend_qt5agg'라는 이름의 모듈 없음 다음을 수행하여 QT5 백엔드를 설치했습니다. PIP 설치 pyqt5. 뿐만 아니라 cx_freeze를 업데이트합니다. 어떤 도움이 필요할 것입니다. 나는 아직도 파이썬뿐만 아니라 일반적으로 프로그래밍을하는 초보자가 나의 탐구에서 충분히 분명하지 않으면 사과드립니다. 아래는 내 주요 파이썬 스크립트의 code입니다
import matplotlib
matplotlib.use('Qt5Agg')
import matplotlib.pyplot as plt
import math as math
import tkinter as tk
from tkinter.filedialog import askopenfilename
import time
def findFilename():
root= tk.Tk()
#root.withdraw()
filename= askopenfilename()
root.destroy()
return(filename)
def findSize(cnt, filename):
#number of lines in file
with open(filename) as f:
for line in f:
cnt= cnt+1;
return cnt;
def findChar(filename):
file= open(filename, "r")
char= ""
lines= file.read()
if(lines.find(" ")== -1):
char= ","
else:
char= " "
return(char)
def inputArr(cnt, arrX, arrY, arrZ, filename, char):
file= open(filename, "r")
num1= 0
num2= 0
num3= 0
place1= 0
place2= 0
place3= 0
for i in range(0, cnt):
num= file.readline()
place1= num.find(char)
num1= num[:place1]
num= num[place1 + 1:]
place2= num.find(char)
num2= num[:place2]
num= num[place2+1:]
place3= num.find(char)
num3= num[:place3]
arrX.append(float(num1))
arrY.append(float(num2))
arrZ.append(float(num3))
return(arrX, arrY, arrZ)
def drawPath(arrX, arrY, label, cnt):
plt.plot(arrX, arrY, '-ok', color= 'red')
plt.xlabel("X coordinates")
plt.ylabel("Y coordinates")
plt.title("Loop path")
plt.show()
for i in range(0,cnt):
label.append(str(i))
for i, txt in enumerate(label):
plt.annotate(txt, (arrX[i], arrY[i]))
def findCenter(arrX, arrY, cnt):
xCenter= 0
yCenter= 0
for i in range(0,cnt):
xCenter += arrX[i]
yCenter += arrY[i]
xCenter /= cnt
yCenter /= cnt
return(xCenter, yCenter)
def moveToCenter(arrX, arrY, arrX1, arrY1, xCenter, yCenter, cnt):
for i in range(0,cnt):
arrX1.append(arrX[i] -xCenter)
arrY1.append(arrY[i] -yCenter)
return(arrX1, arrY1)
def calculateTheta(arrX1, arrY1, arrTheta, cnt):
for i in range(0,cnt):
arrTheta.append(math.atan2(arrY1[i], arrX1[i]))
# print(arrTheta[0])
return(arrTheta)
def sortPoints(arrTheta, arrX, arrY, arrZ, cnt):
minimum= 0
for i in range(0,cnt-1):
minimum= i
for j in range(i + 1, cnt):
if(arrTheta[j] < arrTheta[minimum]):
minimum= j
arrTheta[minimum], arrTheta[i]= arrTheta[i], arrTheta[minimum]
arrX[minimum], arrX[i]= arrX[i], arrX[minimum]
arrY[minimum], arrY[i]= arrY[i], arrY[minimum]
arrZ[minimum], arrZ[i]= arrZ[i], arrZ[minimum]
def writeFile(arrX, arrY, arrZ, cnt, char):
moment= time.strftime("%Y-%b-%d__%H_%M_%S",time.localtime())
file= open("C:\\Users\\natha\\Desktop\\sorted" + str(moment) + ".txt", "w")
num= ""
for i in range(0,cnt):
if(i < 10):
num= "0"
else:
num= ""
file.write("<" + "L" + num + str(i) + ">" + " " + str(arrX[i]) + char +
str(arrY[i]) + char + str(arrZ[i]) + char + "\n")
def main():
cnt= 0
arrX= []
arrY= []
arrZ= []
label= []
arrX1= []
arrY1= []
arrTheta= []
xCenter= 0
yCenter= 0
char= ""
filename= findFilename()
char= findChar(filename)
cnt= findSize(cnt, filename)
findChar(filename)
inputArr(cnt, arrX, arrY, arrZ, filename, char)
xCenter, yCenter= findCenter(arrX, arrY, cnt)
arrX1, arrY1= moveToCenter(arrX, arrY, arrX1, arrY1, xCenter, yCenter, cnt)
arrTheta= calculateTheta(arrX1, arrY1, arrTheta, cnt)
#arrX, arrY, arrZ= randomPoints(arrX, arrY, arrZ, cnt)
sortPoints(arrTheta, arrX, arrY, arrZ, cnt)
writeFile(arrX, arrY, arrZ, cnt, char)
drawPath(arrX, arrY, label, cnt)
main()
및 my setup.py 파일
from cx_Freeze import setup, Executable
import sys
import os.path
os.environ['TCL_LIBRARY']= r'C:\Users\natha\Anaconda3\tcl\tcl8.6'
os.environ['TK_LIBRARY']= r'C:\Users\natha\Anaconda3\tcl\tk8.6'
additional_mods= ['numpy.core._methods', 'numpy.lib.format']
setup(name='loopProgram',
version='0.4',
description='xyz script',
options= {'build_exe': {'includes': additional_mods}},
executables= [Executable('loopProgram.py')]
)
관련 질문
- "ValueError: Shape Mismatch"로 이어지는 Python 오류 캐스케이드
- python : 일대다 관계 flask-sqlalchemy를 식별하는 적절한 방법입니까?
- python : 파이썬 함수에서 하드 코딩된 문자열 값을 피하는 방법
- python : 파이썬을 설치하는 설치 프로그램을 어떻게 만들 수 있습니까?
- python : 큰 숫자가 PLOT Pandas에 나타나지 않도록 차단
- python : 히스토그램에 백분위수 값 표시 문제
- python : for 루프를 사용하여 각 항목 없이 모든 목록을 인쇄하려면 어떻게 해야 합니까? 파이썬에 대안이 있습니까?
- PyTelegramBotAPI는 python3.9에서 send_invoice를 보낼 수 없습니다.
- python : 한 열이 막대의 색상을 나타내는 막대 차트로 데이터 프레임
- python : 팬더 사용자 정의 데이터 포인트로 Seaborn Violinplot을 만드는 방법은 무엇입니까?
"tkagg"백엔드를 시도 했습니까? 나는 100 % 확실하지 않지만 "TKAGG"는 TK 앱에 더 적합합니다.
Kohki Mametani2021-05-21 04:28:10