Юля: Как открыть ссылку в браузере

Вы можете открыть ссылку в Python с помощью библиотеки webbrowser:

import webbrowser
webbrowser.open('http://example.com')

В Julia я могу использовать пакет PyCall для запуска библиотеки Python:

using Pkg
Pkg.add("PyCall")
using PyCall
@pyimport webbrowser
webbrowser.open("http://example.com")

Но есть ли встроенная функция или пакет для Юлии, чтобы открыть ссылку в вашем браузере?

Запуск PHP на IIS без использования программы установки веб-платформы
Запуск PHP на IIS без использования программы установки веб-платформы
Установщик веб-платформы, предлагаемый компанией Microsoft, перестанет работать 31 декабря 2022 года. Его закрытие привело к тому, что мы не можем...
Оптимизация React Context шаг за шагом в 4 примерах
Оптимизация React Context шаг за шагом в 4 примерах
При использовании компонентов React в сочетании с Context вы можете оптимизировать рендеринг, обернув ваш компонент React в React.memo сразу после...
Библиотека для работы с мороженым
Библиотека для работы с мороженым
Лично я попрощался с операторами print() в python. Без шуток.
Настройка шаблона Metronic с помощью Webpack и Gulp
Настройка шаблона Metronic с помощью Webpack и Gulp
Я пишу эту статью, чтобы поделиться тем, как настроить макет Metronic с помощью Sass, поскольку Metronic предоставляет так много документации, и они...
Уроки CSS 6
Уроки CSS 6
Здравствуйте дорогие читатели, я Ферди Сефа Дюзгюн, сегодня мы продолжим с вами уроки css. Сегодня мы снова продолжим с так называемых классов.
Что такое Css? Для чего он используется?
Что такое Css? Для чего он используется?
CSS, или "Каскадные таблицы стилей", - это язык стилей, используемый в веб-страницах. CSS является одним из основных инструментов веб-разработки...
0
0
62
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Встроенной функциональности нет, но вы можете использовать функцию open_in_default_browser из LiveServer.jl (которая, в свою очередь, из Pluto.jl).

$ julia -e 'using LiveServer; LiveServer.open_in_default_browser("https://example.com")'

Я установил LiveServer.jl в своей корневой среде, и он отлично работает. Я также использую его для создания локального веб-сервера с помощью serve. Это альтернатива использованию python -m http.server в папке.

Но если вы не хотите устанавливать LiveServer.jl, вы можете просто вставить код из LiveServer.jl в свой startup.jl файл.


function detectwsl()
    Sys.islinux() &&
    isfile("/proc/sys/kernel/osrelease") &&
    occursin(r"Microsoft|WSL"i, read("/proc/sys/kernel/osrelease", String))
end

function open_in_default_browser(url::AbstractString)::Bool
    try
        if Sys.isapple()
            Base.run(`open $url`)
            return true
        elseif Sys.iswindows() || detectwsl()
            Base.run(`cmd.exe /s /c start "" /b $url`)
            return true
        elseif Sys.islinux()
            browser = "xdg-open"
            if isfile(browser)
                Base.run(`$browser $url`)
                return true
            else
                @warn "Unable to find `xdg-open`. Try `apt install xdg-open`"
                return false
            end
        else
            return false
        end
    catch ex
        return false
    end
end

Также есть https://github.com/tpapp/DefaultApplication.jl и https://github.com/mgkuhn/Desktop.jl, которыми я не пользовался, но вы можете их проверить.

Спасибо! Для Linux это работает, если у пользователя уже есть xdg-open, но у некоторых людей его нет, и им нужно установить его. Но Windows и Mac работают нормально.

Hayden 16.02.2023 20:05

Это хорошо знать! Вы также можете проверить, существует ли xdg-open, и если нет, вы можете проверить другие браузеры в Linux. Это то, что делает Desktop.jl. Я изменил приведенный выше ответ, чтобы включить это.

kdheepak 17.02.2023 00:48

Для запуска Base.run(cmd.exe /s /c start "" /b $url) в окнах WSL, как мне сделать так, чтобы он не выводил ``` '\\wsl.localhost\Ubuntu\home\foo\bar ' CMD.EXE был запущен с указанным выше путем в качестве текущего каталога. Пути UNC не поддерживаются. По умолчанию каталог Windows. ```

Hayden 17.02.2023 18:38

Вы можете использовать success вместо Base.run я думаю.

kdheepak 18.02.2023 22:27

Это работает, но если есть ошибка, я не могу ее поймать?

Hayden 18.02.2023 23:21

Base.run выдаст ошибку, но если вы хотите распространить ее, вы можете удалить try catch из кода, которым я поделился выше.

kdheepak 20.02.2023 00:45

Вы можете рассмотреть using Electron:

using Electron
load(Window(), URI("https://github.com/julialang"))

Это дает мне следующую ошибку: ошибка при загрузке общих библиотек: libgtk-3.so.0: невозможно открыть общий объектный файл: нет такого файла или каталога

Hayden 17.02.2023 00:51

Скорее всего, у вас есть проблема с PATHs для libgtk в вашей установке Linux. Вы можете попробовать пересобрать пакет Electron using Pkg;Pkg.build("Electron"). Еще я мог бы попробовать добавить libgtk-3 в вашу установку Linux и поиграться с PATH. Однако у меня нет Linux, чтобы воспроизвести его.

Przemyslaw Szufel 17.02.2023 10:16

Другие вопросы по теме