【问题标题】:Python: Error raised for scripts saved on serverPython:为保存在服务器上的脚本引发错误
【发布时间】:2018-04-13 00:19:45
【问题描述】:

我希望这是一个简单的问题,我只是遗漏了一些东西。我有一个脚本保存在两个不同的位置,在我们的共享服务器上和本地桌面上。当我从服务器运行脚本时,我得到了看似 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'

这是我可以解决的。由于某种原因,保存在服务器上的版本需要消息,而保存在我桌面上的版本需要 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"

` 一般来说,我知道这可能是丑陋的代码。但除此之外,这里的最终游戏目标是打开一个图像,将其显示给用户,然后删除所有从桌面创建的图像。任何建议或帮助将不胜感激。

【问题讨论】:

  • 对不起,我不明白你的意思。我提到的服务器仅用于存储脚本。它甚至没有真正被服务器执行。
  • 忘掉我之前的 cmets 吧。首先,您可能希望将os.path.join 用于文件夹而不是反斜杠。那你能不能试着用IMG打印一个对os.path.exist的调用来检查服务器说什么?
  • os.path.exists(IMG) 为 os.path.join 和我最初的方式返回 True。这很奇怪,因为一旦我将脚本保存到服务器,“image=”似乎就停止工作了。

标签: python operating-system python-imaging-library easygui


【解决方案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()

【讨论】:

  • 不走运。我将 import 更改为 import easygui 并将 buttonbox 更改为 easygui.bottonbox。不幸的是,同样的事情。在本地保存的文件中工作,但不在我的服务器上保存的文件中工作。不过还是谢谢你。我很感激。
  • python是什么版本,easygui是什么版本的?并且服务器python上是否正确安装了easygui?
  • 我已将服务器和我的 PC 的 python 验证为 2.7.13 和 .98.1。
  • 是的,它很奇怪,因为您报告回来的错误更多是一个界面问题,不需要关键字。我在我的答案中添加了其他内容,您可以尝试,而是从类中创建它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-01
  • 2010-10-28
  • 2013-09-20
  • 2019-09-28
  • 2012-03-04
  • 1970-01-01
相关资源
最近更新 更多