Запустите веб-страницу из моего приложения в Linux

Строка:

exec builtins_code in builtins.__dict__

просто добавляет _ в интерактивную среду, чтобы она повторяла последнюю оцененную переменную. Без этой строки _ не определено. Обратите внимание, что эта функция не очень полезна в сценарии и может быть удалена. Это, похоже, не связано с вашей проблемой.

Похоже, что интерес IronPython заключается в том, чтобы иметь возможность легко взаимодействовать с Microsoft / C #, но он остается «стабильным» в версии 2.7 и, вероятно, не так без ошибок, как официальные версии python (похожая ошибка была встречается и не решается на Reddit , не то чтобы это помогло, но вы знаете, что вы не единственный ...).

У него есть , чтобы быть ошибкой, потому что вы не можете удалить встроенное, если оно не переопределено:

>>> str

>>> del str
Traceback (most recent call last):
  File "", line 1, in 
NameError: name 'str' is not defined

Теперь давайте прагматично: кто-то ни за что собирается исправить эту ошибку в ближайшем будущем.

Таким образом, вы можете попытаться «восстановить» имя str, выполнив:

str = __builtins__.get('str')

Я не проверял это, может быть, это не сработает, когда вы окажетесь в этом странном состоянии , но есть и другие обходные пути, чтобы получить «потерянные» имена классов, используя экземпляр и атрибут __class__:

>>> "".__class__(34)   # "".__class__ is str
'34'
>>> 0 .__class__(1.4)   # note the space to help the parser :)
1

Единственная проблема заключается в том, что в вашем коде будет выглядеть странно. Не забывайте комментировать!

В любом случае, вам не нужно str для этого, вы можете обойти вашу проблему, используя str.format в строке формата (позиционной):

[114 ]

или по ключевому слову:

'Mines {Amount1} minerals each turn (modified by planet value).'.format(Amount1=Amount1)

Этот метод не включает встроенную функцию str. Не говоря о том, что у вас не возникнет других проблем, но даже когда доступно str, это один из предпочтительных способов форматирования строки.

Найдите выход, избегая таких ошибок. К счастью, исключения Python являются явными и могут быть перехвачены с хорошим отслеживанием.

5
задан wil93 30 March 2015 в 19:20
поделиться

4 ответа

Если Вы пишете это для современных дистрибутивов, можно использовать xdg-open:

$ xdg-open http://google.com/

Если Вы находитесь на более старой версии, необходимо будет использовать определенную для рабочего стола команду как gnome-open или exo-open.

7
ответ дан 13 December 2019 в 22:19
поделиться

xdg-открытый новый стандарт, и необходимо использовать его, если это возможно. Однако, если дистрибутив является больше, чем несколько лет, он не может существовать, и альтернативные механизмы включают $BROWSER (более старый предпринятый стандарт), открытый для гнома (Gnome), kfmclient должностное лицо (KDE), экзооткрывают (Xfce), или анализирующий mailcap самостоятельно (обработчик текстов/HTML будет вероятен быть браузером).

Однако большинство приложений не беспокоится так большой работой - если они создаются для конкретной среды, они используют механизмы запуска той среды. Например, Gnome имеет gnome_url_show, KDE имеет KRun, большинство терминальных программ (например, дурак) анализирует mailcap и т.д. Жесткое кодирование браузер и разрешение дистрибьютора или пользователя для переопределения значения по умолчанию распространено также.

Я не предлагаю жесткое кодирование это, но если Вы действительно хотите открыть новую вкладку в Firefox, можно использовать "Firefox - $URL новой вкладки".

2
ответ дан 13 December 2019 в 22:19
поделиться

Если Вы не хотите включать дополнительные приложения, просто используйте встроенные дистанционные команды Firefox. Например:

firefox -remote 'openurl(http://stackoverflow.com)'

Se детализировал использование по http://www.mozilla.org/unix/remote.html

0
ответ дан 13 December 2019 в 22:19
поделиться

Примечание для xdg-открытого: проверьте http://portland.freedesktop.org/wiki/, раздел "Using Xdg-utils"; это указывает, что можно включать xdg-открытый сценарий в собственное приложение и использование, что как нейтрализация в случае, если целевая система не имеет xdg-открытым уже установленный.

1
ответ дан 13 December 2019 в 22:19
поделиться