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

Вы можете открыть ссылку в 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 в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
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

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