Каждый раз, когда я запускаю блокнот IPython, первая команда, которую я запускаю, это
%matplotlib inline
Есть ли способ изменить мой файл конфигурации, чтобы при запуске IPython он автоматически находился в этом режиме?
Каждый раз, когда я запускаю блокнот IPython, первая команда, которую я запускаю, это
%matplotlib inline
Есть ли способ изменить мой файл конфигурации, чтобы при запуске IPython он автоматически находился в этом режиме?
IPython имеет профили для настройки, расположенные по адресу ~/.ipython/profile_*
. Профиль по умолчанию называется profile_default
. В этой папке есть два основных файла конфигурации:
ipython_config.py
ipython_kernel_config.py
Добавьте встроенную опцию для matplotlib в ipython_kernel_config.py
:
c = get_config()
# ... Any other configurables you want to set
c.InteractiveShellApp.matplotlib = "inline"
Использование %pylab
для встроенного построения графиков не рекомендуется.
Он вводит в ваше пространство имен всякую дрянь, которая вам просто не нужна.
%matplotlib
, с другой стороны, включает встроенное построение без внедрения вашего пространства имен. Вам нужно будет сделать явные вызовы, чтобы импортировать matplotlib и numpy.
import matplotlib.pyplot as plt
import numpy as np
Небольшая цена явного ввода вашего импорта должна быть полностью преодолена тем фактом, что теперь у вас есть воспроизводимый код.
%matplotlib
, или он одновременно устанавливает бэкэнд по умолчанию и < i>автоматически настроить для немедленного использования в среде iPython.
- person 8one6; 17.01.2014
matplotlib
vs pylab
, iPython позволяет очень легко автоматически выполнять произвольный код Python каждый раз, когда вы запускаете с помощью профилей. Я считаю, что профиль, в котором вы автоматически выполняете общие операции импорта, такие как import numpy as np; import pandas as pd; import matplotlib.pyplot as plt
и т. д., является довольно распространенным явлением. NB: pylab
не то же самое, что pyplot
. Должно быть, мне понадобился месяц, чтобы понять это.
- person 8one6; 17.01.2014
ipython_kernel_config.py
, который содержит эту опцию. Создайте новый профиль (ipython profile create test
), чтобы получить профиль по умолчанию.
- person DGrady; 04.06.2015
c.InteractiveShellApp.matplotlib = "inline"
- person tiago; 26.08.2015
~/.jupyter/jupyter-notebook-config.py
? Имя опции c.NotebookApp.matplotlib
- person Chris Warth; 02.12.2015
c.InteractiveShellApp.matplotlib = "inline"
в ~/.jupyter/jupyter_notebook_config.py
. Моя цель - заставить это работать в ноутбуках Jupyter (только) и оставить оболочку IPython в покое.
- person orome; 06.04.2016
%matplotlib
при запуске аналогичным образом? В настоящее время я делаю get_ipython().magic('matplotlib')
в файле startup.py, что кажется неправильным способом сделать это.
- person timgeb; 31.12.2018
Я думаю, что вы хотите запустить следующее из командной строки:
ipython notebook --matplotlib=inline
Если вам не нравится вводить это в строке cmd каждый раз, вы можете создать псевдоним, который сделает это за вас.
--matplotlib inline
и удалите материал --pylab. См. этот пост от разработчиков ipython, почему: carreau.github.io /posts/10-No-PyLab-Спасибо.ipynb.html
- person Jakob; 22.01.2014
matplotlib=inline
: оно будет замедлять каждое запускаемое вами ядро, независимо от того, хотите ли вы использовать matplotlib.
- person Kyle Kelley; 06.10.2014
--matplotlib
или --pylab
игнорируются.
- person tiago; 26.08.2015
%pylab
или %matplotlib
.
- person Cas; 07.04.2017
Параметр был отключен в Jupyter 5.X
и более поздних версиях путем добавления кода ниже
pylab = Unicode('disabled', config=True,
help=_("""
DISABLED: use %pylab or %matplotlib in the notebook to enable matplotlib.
""")
)
@observe('pylab')
def _update_pylab(self, change):
"""when --pylab is specified, display a warning and exit"""
if change['new'] != 'warn':
backend = ' %s' % change['new']
else:
backend = ''
self.log.error(_("Support for specifying --pylab on the command line has been removed."))
self.log.error(
_("Please use `%pylab{0}` or `%matplotlib{0}` in the notebook itself.").format(backend)
)
self.exit(1)
И в предыдущих версиях это в основном было предупреждением. Но это не большая проблема, потому что Jupyter использует концепцию kernels
, и вы можете найти ядро для своего проекта, выполнив приведенную ниже команду.
$ jupyter kernelspec list
Available kernels:
python3 /Users/tarunlalwani/Documents/Projects/SO/notebookinline/bin/../share/jupyter/kernels/python3
Это дает мне путь к папке ядра. Теперь, если я открою файл /Users/tarunlalwani/Documents/Projects/SO/notebookinline/bin/../share/jupyter/kernels/python3/kernel.json
, я увижу что-то вроде ниже
{
"argv": [
"python",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}",
],
"display_name": "Python 3",
"language": "python"
}
Таким образом, вы можете видеть, какая команда выполняется для запуска ядра. Итак, если вы запустите приведенную ниже команду
$ python -m ipykernel_launcher --help
IPython: an enhanced interactive Python shell.
Subcommands
-----------
Subcommands are launched as `ipython-kernel cmd [args]`. For information on
using subcommand 'cmd', do: `ipython-kernel cmd -h`.
install
Install the IPython kernel
Options
-------
Arguments that take values are actually convenience aliases to full
Configurables, whose aliases are listed on the help line. For more information
on full configurables, see '--help-all'.
....
--pylab=<CaselessStrEnum> (InteractiveShellApp.pylab)
Default: None
Choices: ['auto', 'agg', 'gtk', 'gtk3', 'inline', 'ipympl', 'nbagg', 'notebook', 'osx', 'pdf', 'ps', 'qt', 'qt4', 'qt5', 'svg', 'tk', 'widget', 'wx']
Pre-load matplotlib and numpy for interactive use, selecting a particular
matplotlib backend and loop integration.
--matplotlib=<CaselessStrEnum> (InteractiveShellApp.matplotlib)
Default: None
Choices: ['auto', 'agg', 'gtk', 'gtk3', 'inline', 'ipympl', 'nbagg', 'notebook', 'osx', 'pdf', 'ps', 'qt', 'qt4', 'qt5', 'svg', 'tk', 'widget', 'wx']
Configure matplotlib for interactive use with the default matplotlib
backend.
...
To see all available configurables, use `--help-all`
Так что теперь, если мы обновим наш файл kernel.json
до
{
"argv": [
"python",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}",
"--pylab",
"inline"
],
"display_name": "Python 3",
"language": "python"
}
И если я запускаю jupyter notebook
, графики автоматически inline
Обратите внимание, что приведенный ниже подход также все еще работает, когда вы создаете файл по указанному ниже пути.
~/.ipython/profile_default/ipython_kernel_config.py
c = get_config()
c.IPKernelApp.matplotlib = 'inline'
Но недостатком этого подхода является то, что это глобальное влияние на каждую среду, использующую Python. Вы также можете рассматривать это как преимущество, если хотите иметь общее поведение в разных средах с одним изменением.
Поэтому выберите подход, который вы хотели бы использовать, исходя из ваших требований.
В файле ipython_config.py
найдите следующие строки
# c.InteractiveShellApp.matplotlib = None
а также
# c.InteractiveShellApp.pylab = None
и раскомментируйте их. Затем измените None
на серверную часть, которую вы используете (я использую 'qt4'
), и сохраните файл. Перезапустите IPython, и matplotlib и pylab должны быть загружены — вы можете использовать команду dir()
, чтобы проверить, какие модули находятся в глобальном пространстве имен.
В (текущем) IPython 3.2.0 (Python 2 или 3)
Откройте файл конфигурации в скрытой папке .ipython.
~/.ipython/profile_default/ipython_kernel_config.py
добавить следующую строку
c.IPKernelApp.matplotlib = 'inline'
добавить сразу после
c = get_config()
Создайте любой .py
файл в ~/.ipython/profile_default/startup/
, содержащий
get_ipython().magic('matplotlib inline')
В дополнение к @Kyle Kelley и @DGrady, вот запись, которую можно найти в
$HOME/.ipython/profile_default/ipython_kernel_config.py
(или любой созданный вами профиль)
Изменять
# Configure matplotlib for interactive use with the default matplotlib backend.
# c.IPKernelApp.matplotlib = none
to
# Configure matplotlib for interactive use with the default matplotlib backend.
c.IPKernelApp.matplotlib = 'inline'
Затем это будет работать как в ipython qtconsole, так и в сеансах ноутбука.
ipython --matplotlib
лучше - person tacaswell   schedule 18.01.2014