Warning: Error in py_run_file_impl: NameError: name '__file__' is not defined

Warning: Error in py_run_file_impl: NameError: name '__file__' is not defined

我正在尝试通过 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 中。有谁知道我该如何解决这个问题?

不知道为什么没有定义__file__,可能是启动器的bug。它通常发生在包是内置的或程序已 运行 通过 cx_freezepy2exe 时,这里不是这种情况。

对于您的情况,解决方法是使用 sys.argv[0] 作为该值。它在这里工作是因为它是您 运行ning 的主程序。使用辅助包它不会工作(但 __file__ 可能会 :))

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

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

所以如果 __file__ 存在,好吧,顺其自然,否则将其定义为 运行ning.

脚本的文件路径