Python: เกิดข้อผิดพลาดสำหรับสคริปต์ที่บันทึกไว้บนเซิร์ฟเวอร์

ฉันหวังว่านี่จะเป็นปัญหาง่ายๆ และฉันแค่ขาดอะไรบางอย่างไป ฉันมีสคริปต์ที่บันทึกไว้ในสองตำแหน่งที่แตกต่างกัน บนเซิร์ฟเวอร์ที่ใช้ร่วมกันของเราและบนเดสก์ท็อปของฉัน เมื่อฉันเรียกใช้สคริปต์จากเซิร์ฟเวอร์ ฉันได้รับสิ่งที่ดูเหมือนจะเป็นข้อผิดพลาด easygui

Traceback (most recent call last):
   File "Z:\Python\module1.py", line 35, in <module>
      reply = buttonbox(msg=msg,image=IMG)
TypeError: buttonbox() got an unexpected keyword argument 'msg'

นี่ฉันสามารถไปไหนมาไหนได้ ด้วยเหตุผลบางประการ จำเป็นต้องมีข้อความสำหรับเวอร์ชันที่บันทึกไว้บนเซิร์ฟเวอร์ และจำเป็นต้องมีข้อความสำหรับเวอร์ชันที่บันทึกไว้บนเดสก์ท็อปของฉัน ไม่เป็นไรเพราะอย่างน้อยมันก็ใช้งานได้ สิ่งที่ทำลายสิ่งนี้สำหรับฉันคือฟีเจอร์รูปภาพ มันใช้งานได้กับเวอร์ชันบนเดสก์ท็อปของฉัน แต่ฉันไม่รู้ว่าจะทำให้มันทำงานบนเวอร์ชันบนเซิร์ฟเวอร์ของเราได้อย่างไร รหัสเต็มที่แสดงด้านล่าง:

import PIL
from PIL import Image
import os
from easygui import *
import sys
print sys.version, sys.version_info

WORKDIR = "c:\\temp"
DESKTOP = 'c:' + os.environ['HOMEPATH'] + "\Desktop"
os.chdir(DESKTOP)
IMAGES = os.listdir(DESKTOP+"\\New Items Images")
for IMAGE in IMAGES:

path = DESKTOP+"\\New Items Images\\"+IMAGE

#Creates a Tkinter-compatible photo image, which can be used everywhere Tkinter expects an image object.
img = Image.open(path)
width, height = img.size
if width >= height:
    basewidth = 600
    wpercent = (basewidth / float(img.size[0]))
    hsize = int((float(img.size[1]) * float(wpercent)))
else:
    baseheight = 600
    hpercent = (baseheight / float(img.size[1]))
    wsize = int((float(img.size[0]) * float(hpercent)))
img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS)

img.save(DESKTOP + "\\" + IMAGE)


IMG = DESKTOP+"\\"+IMAGE
SKU = "sku"
msg = "Is %s acceptable?\n%s\n%sx%s" % (IMAGE, SKU, width, height)
reply = buttonbox(msg=msg,image=IMG)
if ynbox == 1:
    print "This would now get pushed to CA"

` โดยทั่วไปแล้ว ฉันรู้ว่านี่อาจเป็นโค้ดที่น่าเกลียด แต่นอกเหนือจากนั้น เป้าหมายท้ายเกมคืออะไรเพื่อเปิดภาพ แสดงให้ผู้ใช้เห็น จากนั้นลบภาพที่สร้างขึ้นทั้งหมดออกจากเดสก์ท็อป คำแนะนำหรือความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก


person TheFarmGuy    schedule 12.04.2018    source แหล่งที่มา
comment
ฉันขอโทษ ฉันไม่รู้ว่าคุณหมายถึงอะไร เซิร์ฟเวอร์ที่ฉันกล่าวถึงใช้เพื่อจัดเก็บสคริปต์เท่านั้น มันไม่ได้ถูกดำเนินการโดยเซิร์ฟเวอร์จริงๆ ด้วยซ้ำ   -  person TheFarmGuy    schedule 12.04.2018
comment
ลืมความคิดเห็นก่อนหน้าของฉันซึ่งไม่เกี่ยวกับหัวข้อ สิ่งแรกคือคุณอาจต้องการใช้ os.path.join สำหรับโฟลเดอร์แทนแบ็กสแลช ถ้าอย่างนั้นคุณลองพิมพ์การโทรไปที่ os.path.exist ด้วย IMG เพื่อตรวจสอบสิ่งที่เซิร์ฟเวอร์พูดได้ไหม   -  person Adonis    schedule 12.04.2018
comment
os.path.exists(IMG) กลับมาเป็น True สำหรับ os.path.join และวิธีที่ฉันมีในตอนแรก มันแปลกเพราะดูเหมือนว่า image= หยุดทำงานเมื่อฉันบันทึกสคริปต์ไปยังเซิร์ฟเวอร์   -  person TheFarmGuy    schedule 12.04.2018


คำตอบ (1)


บางทีอาจเป็นวิธีการนำเข้าและการรับกล่องปุ่มจากไลบรารีอื่นและไม่รู้จักพารามิเตอร์

มันใช้ได้ไหม?

import easygui
easygui.buttonbox(msg=msg, image=IMG)

หรือแม้แต่ข้อมูลธรรมดาเช่นงานนี้?

import easygui
easygui.buttonbox('Click on your favorite flavor.', 'Favorite Flavor', ('Chocolate', 'Vanilla', 'Strawberry'))

หากไม่มีงานใดที่คุณอาจต้องการตรวจสอบเวอร์ชันของ easygui และเอกสารที่เกี่ยวข้อง

หรือบางทีมันอาจขัดแย้งกับคลาส "ButtonBox" และฟังก์ชันการสร้างอินสแตนซ์ "buttonbox" ที่พวกเขามีซึ่งมีชื่อเหมือนกันยกเว้นว่าไม่ได้ใช้ kwargs และด้วยเหตุผลบางประการที่มีปัญหาอยู่ที่นั่น

https://github.com/robertlugg/easygui/blob/master/easygui/boxes/button_box.py#L110

ลองสร้างอินสแตนซ์เวอร์ชันคลาสเช่นนี้

bb = ButtonBox("message", "title", ('Chocolate', 'Vanilla'), None, None, None, None)
reply = bb.run()
person davidejones    schedule 12.04.2018
comment
ไม่มีโชคกับสิ่งนั้น ฉันเปลี่ยนการนำเข้าเพื่อนำเข้า easygui และเปลี่ยนกล่องปุ่มเป็น easygui.bottonbox น่าเสียดายที่สิ่งเดียวกัน ทำงานในไฟล์ที่บันทึกไว้ในเครื่องแต่ไม่อยู่ในไฟล์ที่บันทึกบนเซิร์ฟเวอร์ของฉัน ขอบคุณนะ. ฉันรู้สึกทราบซึ้ง. - person TheFarmGuy; 12.04.2018
comment
เป็น Python เวอร์ชันใดและ easygui เวอร์ชันใด และติดตั้ง easygui อย่างถูกต้องบนเซิร์ฟเวอร์ python หรือไม่ - person davidejones; 12.04.2018
comment
ฉันได้ตรวจสอบ python เป็น 2.7.13 และ .98.1 สำหรับทั้งเซิร์ฟเวอร์และพีซีของฉันแล้ว - person TheFarmGuy; 12.04.2018
comment
ใช่ มันแปลกเนื่องจากข้อผิดพลาดที่คุณรายงานว่ากลับมาเป็นปัญหาอินเทอร์เฟซมากกว่าที่ไม่คาดหวังคำหลัก ฉันได้เพิ่มอย่างอื่นลงในคำตอบที่คุณสามารถลองได้โดยสร้างจากชั้นเรียนแทน - person davidejones; 12.04.2018