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