代码之家  ›  专栏  ›  技术社区  ›  Knowledge Seeker

警告:py_run_file_impl:name错误:未定义名称“uu file_uuuu”

  •  1
  • Knowledge Seeker  · 技术社区  · 6 年前

    我想运行一个名为 tss.py 通过R亮。我成功地运行了这个文件。但当我通过shining的用户界面运行python文件时,它给了我错误。我运行这个程序时没有出错 TS.Py 在里面 魔女 . 有人知道我如何解决这个问题吗?

    文件路径:

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

    服务器.r:

    observeEvent(input$action,{
        py_run_file("applications/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 回复  |  直到 6 年前
        1
  •  1
  •   Jean-François Fabre    6 年前

    我不知道为什么 __file__ 没有定义,可能是启动程序的错误。通常在包是内置的或程序已经运行时发生 cx_freeze py2exe ,这里不是这样。

    在您的情况下,解决方法是使用 sys.argv[0] 作为这个值。它在这里工作是因为它是你运行的主程序。如果有一个辅助包,它就不能工作了(但是 _文件__ 可能会:))

    所以我建议把这个加到你的 tss.py 文件

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

    所以如果 _文件__ 存在,好吧,让它存在,否则将它定义为正在运行的脚本的文件路径。