Как исправить «WindowsError: [Ошибка 2] Системе не удается найти указанный файл» после переноса программы Python на новый компьютер - PullRequest
0 голосов
/ 26 июня 2019

Я недавно переместил программу Python с одной машины на другую. После запуска программы (которая называется Main.py) из командной строки я получаю следующую ошибку:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python27\lib\lib-tk\Tkinter.py", line 1532, in __call__
    return self.func(*args)
  File "C:\Pyscan\Main.py", line 28, in callback
    test.load_sets()
  File "C:\Pyscan\test.py", line 107, in load_sets
    tts = TTS()
  File "C:\Pyscan\text2speech.py", line 9, in __init__
    self.festival = Popen(['festival', '--pipe'], bufsize=0, stdin=PIPE)
  File "C:\Python27\lib\subprocess.py", line 711, in __init__
    errread, errwrite)
  File "C:\Python27\lib\subprocess.py", line 959, in _execute_child
    startupinfo)
WindowsError: [Error 2] The system cannot find the file specified

Это код для Main.py (файл, который я пытаюсь запустить)

#Login Script For Card-Botics
import MySQLdb
import getpass
from Tkinter import *
from PIL import ImageTk, Image
import os
import test
import webbrowser

working_directory = r'c:\Pyscan'
file_path = os.path.join(working_directory, 'Main.py')




#CONSTANTS
USERFILE = "c:/xampp/htdocs/mtgtradedesign/user.txt"
url = 'http://127.0.0.1/mtgtradedesign/index.php'

class MyFrame(Frame):
    def __init__(self, master):
        Frame.__init__(self, master)
        self.b1 = Button(self, text="SCAN CARDS",command = self.callback)
        self.b2 = Button(self, text="SEE RESULTS", command = self.callback2) 
        #Configure Button Sizes
        self.b1.config( height = 3, width = 25 )
        self.b2.config( height = 3, width = 25 )      
        # self.b2.bind('<Button-1>',lambda event:self.callback2())
        self.b1.grid()
        self.b2.grid()           
    def callback(self):
        self.b1['state'] = DISABLED
        test.load_sets()
    def callback2(self):
        self.b1['state'] = NORMAL
        webbrowser.open('http://127.0.0.1/mtgtradedesign/index.php')        

def update_username():   
    f = open(USERFILE, 'w')
    f.write('%s' % username)
    f.close()          

def open_url(url):
    webbrowser.open_new(url)

def main():
    #Run The Class Which Puts The Tkinter windows z-index in the background every 100ms      
    mainw = Tk()
    #Set The Window Title
    mainw.title("Card-botics V1.1")
    #Label
    theLabel = Label(mainw, text="Welcome To The POP! Card-botics Program. To Scan your cards simply \n press the 'SCAN CARDS' button. When the Program makes a match, press 'B' to add \n it to your keyboard. When you are done scanning cards press 'E' to end  \n your trade. Finally press the 'See Results' button to see your results! ")   
    theLabel.grid() 
    mainw.f = MyFrame(mainw)
    mainw.f.grid()
    #Place Window In Center
    mainw.eval('tk::PlaceWindow %s center' % mainw.winfo_pathname(mainw.winfo_id()))    
    mainw.mainloop()


print "Welcome To Card-Botics V1.0 - Please Enter Your User Name and Password To Continue"

#Make connection to sql database

db = MySQLdb.connect(host = "localhost", user = "root", passwd = "", db = "mscan")

#Set Up Query

query = db.cursor()

loop = 'true'

while(loop == 'true'):
    username = raw_input('Enter Your Username: ')
    password = getpass.getpass('Enter Your Password: ')
    if(query.execute("SELECT * FROM `users` WHERE `username` = '" + username + "' AND `password` = '" + password + "'")):
        db.commit()
        print "logged in"
        update_username()
        main()
    else:
        db.commit()
        print "Failure. Please Try again"


Я исследовал это и сузил то, во что верю в проблему, но мне не повезло, что я решил ее. Насколько я могу судить, интерпретатор Python не перемещается в соответствующий каталог для файлов Main.py, test.py и text2speech.py ​​

Python установлен в каталог C: \ Python27, а каталог, из которого я загружаю программу, - C: \ Pyscan

Я немного исследовал это, и некоторые из решений, которые я пробовал, такие как импортный подпроцесс и shell = true для обратных вызовов подпроцесса, но пока ничего из того, что я пробовал, не сработало.

У меня нет этой проблемы на компьютере, на котором изначально была написана программа. Это проблема пути с Python? Если это так, может кто-то здесь, пожалуйста, помогите мне решить эту проблему.

С уважением

Спенсер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...