Предупреждение: ошибка в py_run_file_impl: NameError: имя '__file__' не определено

1

Я пытаюсь запустить файл python с именем tss.py через R в Shiny. Мне удалось запустить этот файл. Но это дает мне ошибку, когда я запускаю файл python через пользовательский интерфейс Shiny. Я не ошибаюсь, когда запускаю этот tss.py в Pycharm. Кто-нибудь знает, как я могу решить эту проблему?

Путь к файлам:

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
    есть обходной путь, который, вероятно, сработает в вашем случае: установите __file__ в sys.argv[0]
  • 0
    @Jean-FrançoisFabre Жан-Франсуа Фабр. Я называю это tss.py в R Studio.
Показать ещё 2 комментария
Теги:
shiny
shiny-server
nameerror

1 ответ

1
Лучший ответ

Я не знаю, почему __file__ не определен, вероятно, ошибка пусковой установки. Обычно это происходит, когда пакет встроен или когда программа запускается через cx_freeze или py2exe, что здесь не так.

В вашем случае обходным sys.argv[0] было бы использовать sys.argv[0] качестве этого значения. Он работает здесь, потому что это основная программа, в которой вы работаете. Со вспомогательным пакетом это не сработало бы (но __file__ возможно, будет :))

Поэтому я предлагаю добавить это в ваш файл tss.py

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

поэтому, если __file__ существует, ну, пусть это будет, иначе определите его как __file__ скрипта, который запущен.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню