我正在尝试通过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中得到这个。有谁知道我该如何解决?
答案 0 :(得分:1)
我不知道为什么未定义__file__
,可能是启动器的错误。通常是在内置软件包或通过cx_freeze
或py2exe
运行程序的情况下发生的,这不是这种情况。
对于您而言,一种解决方法是将sys.argv[0]
用作此值。它在这里起作用,因为它是您正在运行的主程序。使用辅助软件包将无法正常工作(但__file__
可能会:))
所以我建议将此添加到您的tss.py
文件中
import sys # must be done before
try:
__file__
except NameError:
__file__ = sys.argv[0]
因此,如果__file__
存在,那么顺其自然,否则将其定义为正在运行的脚本的文件路径。