>

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')]
    )

"tkagg"백엔드를 시도 했습니까? 나는 100 % 확실하지 않지만 "TKAGG"는 TK 앱에 더 적합합니다.

Kohki Mametani2021-05-21 04:28:10
  • 이전 디렉토리와 다른 모듈 이름을 가진 프로젝트를 android studio로 가져 오기
  • 다음 css - "반쪽"측면 모드가있는 각도 재료 사이드 바