警告:py_run_file_impl中的错误:NameError:未定义名称'__file__'

时间:2018-07-20 12:07:46

标签: python r shiny shiny-server nameerror

我正在尝试通过Shiny中的R运行名为tss.py的python文件。我已成功运行此文件。但是当我通过Shiny用户界面运行python文件时,这给了我错误。在 Pycharm 中运行此tss.py时,我没有出现任何错误。有人知道我该如何解决这个问题?

文件路径:

D:\PycharmProjects\Tasks\applications\tss.py
D:\PycharmProjects\Tasks\server.R

Server.R:

observeEvent(input$action,{
    py_run_file("applications/tss.py")
  })

tss.py:

import os
import sys
sys.path.append(os.path.split(os.path.dirname(os.path.realpath(__file__)))[0])
print("Mayday! Mayday!")

错误:

Warning: Error in py_run_file_impl: NameError: name '__file__' is not defined
  76: <Anonymous>

请不要将此问题标记为重复。我在R中而不是在Python中得到这个。有谁知道我该如何解决?

1 个答案:

答案 0 :(得分:1)

我不知道为什么未定义__file__,可能是启动器的错误。通常是在内置软件包或通过cx_freezepy2exe运行程序的情况下发生的,这不是这种情况。

对于您而言,一种解决方法是将sys.argv[0]用作此值。它在这里起作用,因为它是您正在运行的主程序。使用辅助软件包将无法正常工作(但__file__可能会:))

所以我建议将此添加到您的tss.py文件中

import sys # must be done before
try:
     __file__
except NameError: 
    __file__ = sys.argv[0]

因此,如果__file__存在,那么顺其自然,否则将其定义为正在运行的脚本的文件路径。