Вы можете открыть ссылку в 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")
Но есть ли встроенная функция или пакет для Юлии, чтобы открыть ссылку в вашем браузере?
Встроенной функциональности нет, но вы можете использовать функцию 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, которыми я не пользовался, но вы можете их проверить.
Это хорошо знать! Вы также можете проверить, существует ли xdg-open
, и если нет, вы можете проверить другие браузеры в Linux. Это то, что делает Desktop.jl
. Я изменил приведенный выше ответ, чтобы включить это.
для запуска Base.run(
cmd.exe /s /c start "" /b $url)
в окнах WSL, как мне сделать так, чтобы он не выводил ``` '\\wsl.localhost\Ubuntu\home\foo\bar ' CMD.EXE был запущен с указанным выше путем в качестве текущего каталога. Пути UNC не поддерживаются. По умолчанию каталог Windows. ```
Вы можете использовать success
вместо Base.run
я думаю.
Это работает, но если есть ошибка, я не могу ее поймать?
Base.run выдаст ошибку, но если вы хотите распространить ее, вы можете удалить try catch из кода, которым я поделился выше.
Вы можете рассмотреть using Electron
:
using Electron
load(Window(), URI("https://github.com/julialang"))
это дает мне следующую ошибку: ошибка при загрузке общих библиотек: libgtk-3.so.0: невозможно открыть общий объектный файл: нет такого файла или каталога
Скорее всего, у вас есть проблема с PATH
s для libgtk в вашей установке Linux. Вы можете попробовать пересобрать пакет Electron using Pkg;Pkg.build("Electron")
. Еще я мог бы попробовать добавить libgtk-3 в вашу установку Linux и поиграться с PATH. Однако у меня нет Linux, чтобы воспроизвести его.
Спасибо! Для Linux это работает, если у пользователя уже есть xdg-open, но у некоторых людей его нет, и им нужно установить его. Но Windows и Mac работают нормально.