Как открыть онлайн-ссылку с IPython? - PullRequest
0 голосов
/ 21 октября 2019

Есть ли способ заставить IPython открыть браузер, указывающий на соответствующую онлайн-ссылку?

Специально для numpy, scipy, matplotlib?

Например,Документ для numpy.linalg.cholesky довольно трудно читать в терминале.

1 Ответ

1 голос
/ 23 октября 2019

Я не думаю, что есть прямой способ заставить IPython или любую оболочку открывать документацию онлайн, потому что основная задача оболочек - позволить вам взаимодействовать с вещами, для которых они являются оболочками.

Однако мы могли бы написать скрипт для открытия новой вкладки в браузере с документацией. Например:

import webbrowser

docsList = {
    "numpy" : lambda x: "https://docs.scipy.org/doc/numpy/reference/generated/" + x + ".html",
    "scipy" : lambda x: "https://docs.scipy.org/doc/scipy/reference/generated/" + x + ".html",
    "matplotlib" : lambda x: "https://matplotlib.org/api/" + x.split('.')[1] + "_api.html",
    "default" : lambda x: "https://www.google.com/search?q=documentation+" + x
    }

def online(method_name):
    """
    Opens up the documentation for method_name on the default browser.
    If the package doesn't match any entry in the dictionary, falls back to
    Google.

    Usage
    -------
    >>> lookUp.online("numpy.linalg.cholesky")
    >>> lookUp.online("matplotlib.contour")
    """
    try:
        url = make_url(method_name)
    except AttributeError:
        print("Enter the method name as a string and try again")
        return

    webbrowser.open(url, new = 2)
    return


def make_url(method_name):
    package_name = method_name.split('.')[0]
    try:
        return docsList[package_name](method_name)
    except KeyError:
        return docsList["default"](method_name)

Вы можете сохранить вышеприведенное как "lookUp.py" в месте, где Python может его найти, и затем импортировать его, когда вам нужно его использовать.

Предостережения:

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

>>> lookUp.online("numpy.linalg.cholesky")

Будет работать.

>>> lookUp.online(numpy.linalg.cholesky)

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

...