Mỗi khi tôi khởi chạy IPython Notebook, lệnh đầu tiên tôi chạy là
%matplotlib inline
Có cách nào để thay đổi tệp cấu hình của tôi để khi tôi khởi chạy IPython, nó sẽ tự động ở chế độ này không?
Mỗi khi tôi khởi chạy IPython Notebook, lệnh đầu tiên tôi chạy là
%matplotlib inline
Có cách nào để thay đổi tệp cấu hình của tôi để khi tôi khởi chạy IPython, nó sẽ tự động ở chế độ này không?
ipython --matplotlib
được tốt hơn
Câu trả lời:
IPython có hồ sơ để cấu hình, đặt tại ~/.ipython/profile_*
. Cấu hình mặc định được gọi profile_default
. Trong thư mục này có hai tệp cấu hình chính:
ipython_config.py
ipython_kernel_config.py
Thêm tùy chọn nội tuyến cho matplotlib vào ipython_kernel_config.py
:
c = get_config()
# ... Any other configurables you want to set
c.InteractiveShellApp.matplotlib = "inline"
Không khuyến khích sử dụng %pylab
để có được âm mưu nội tuyến .
Nó giới thiệu tất cả các loại rác vào không gian tên của bạn mà bạn chỉ không cần.
%matplotlib
mặt khác cho phép vẽ nội tuyến mà không cần chèn không gian tên của bạn. Bạn sẽ cần thực hiện các lệnh gọi rõ ràng để nhập matplotlib và numpy.
import matplotlib.pyplot as plt
import numpy as np
Giá nhỏ của việc gõ ra các nhập khẩu của bạn một cách rõ ràng sẽ được khắc phục hoàn toàn bởi thực tế là bạn đã có mã có thể tái tạo.
%matplotlib
hay liệu nó có đặt cả phần phụ trợ mặc định và tự động thiết lập để sử dụng ngay lập tức trong Môi trường iPython.
matplotlib
vs pylab
, iPython giúp bạn rất dễ dàng tự động thực thi mã python tùy ý mỗi khi bạn khởi chạy bằng Hồ sơ. Tôi tin rằng nó là khá phổ biến để có một cấu hình mà bạn tự động làm hàng nhập khẩu thông thường thích import numpy as np; import pandas as pd; import matplotlib.pyplot as plt
vv NB: pylab
là không được điều tương tự như pyplot
. Tôi phải mất một tháng để nhận ra điều đó.
ipython_kernel_config.py
, chứa tùy chọn này. Tạo một hồ sơ mới ( ipython profile create test
) để có một hồ sơ mặc định.
c.InteractiveShellApp.matplotlib = "inline"
Tôi nghĩ những gì bạn muốn có thể là chạy phần sau từ dòng lệnh:
ipython notebook --matplotlib=inline
Nếu bạn không thích gõ nó ở dòng cmd mọi lúc thì bạn có thể tạo một bí danh để làm điều đó cho bạn.
--matplotlib inline
và xóa nội dung --pylab. Xem bài đăng này của một devel ipython lý do tại sao: carreau.github.io/posts/10-No-PyLab-Thanks.ipynb.html
matplotlib=inline
: Nó sẽ làm chậm mọi hạt nhân bạn khởi chạy, bất kể bạn có muốn sử dụng matplotlib hay không.
--matplotlib
hoặc --pylab
bị bỏ qua.
%pylab
hoặc %matplotlib
thay thế.
Cài đặt đã bị vô hiệu hóa trong Jupyter 5.X
và cao hơn bằng cách thêm mã bên dưới
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)
Và trong các phiên bản trước, nó chủ yếu là một cảnh báo. Nhưng đây không phải là vấn đề lớn vì Jupyter sử dụng các khái niệm về kernels
và bạn có thể tìm hạt nhân cho dự án của mình bằng cách chạy lệnh dưới đây
$ jupyter kernelspec list
Available kernels:
python3 /Users/tarunlalwani/Documents/Projects/SO/notebookinline/bin/../share/jupyter/kernels/python3
Điều này cho tôi đường dẫn đến thư mục hạt nhân. Bây giờ nếu tôi mở /Users/tarunlalwani/Documents/Projects/SO/notebookinline/bin/../share/jupyter/kernels/python3/kernel.json
tệp, tôi thấy một cái gì đó như bên dưới
{
"argv": [
"python",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}",
],
"display_name": "Python 3",
"language": "python"
}
Vì vậy, bạn có thể xem lệnh nào được thực thi để khởi chạy hạt nhân. Vì vậy, nếu bạn chạy lệnh dưới đây
$ 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`
Vì vậy, bây giờ nếu chúng tôi cập nhật kernel.json
tệp của mình lên
{
"argv": [
"python",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}",
"--pylab",
"inline"
],
"display_name": "Python 3",
"language": "python"
}
Và nếu tôi chạy jupyter notebook
, đồ thị sẽ tự độnginline
Lưu ý rằng cách tiếp cận bên dưới cũng vẫn hoạt động, nơi bạn tạo tệp trên đường dẫn bên dưới
~ / .ipython / profile_default / ipython_kernel_config.py
c = get_config()
c.IPKernelApp.matplotlib = 'inline'
Nhưng nhược điểm của cách làm này là tác động toàn cầu đến mọi môi trường sử dụng python. Bạn cũng có thể coi đó là một lợi thế nếu bạn muốn có một hành vi chung giữa các môi trường với một thay đổi duy nhất.
Vì vậy, hãy chọn cách tiếp cận mà bạn muốn sử dụng dựa trên yêu cầu của bạn
Trong ipython_config.py
tệp của bạn , hãy tìm kiếm các dòng sau
# c.InteractiveShellApp.matplotlib = None
và
# c.InteractiveShellApp.pylab = None
và bỏ ghi chú chúng. Sau đó, thay đổi None
thành phần phụ trợ mà bạn đang sử dụng (tôi sử dụng 'qt4'
) và lưu tệp. Khởi động lại IPython và matplotlib và pylab sẽ được tải - bạn có thể sử dụng dir()
lệnh để xác minh mô-đun nào trong không gian tên chung.
Ngoài @Kyle Kelley và @DGrady, đây là mục nhập có thể được tìm thấy trong
$HOME/.ipython/profile_default/ipython_kernel_config.py
(hoặc bất kỳ hồ sơ nào bạn đã tạo)
Thay đổi
# Configure matplotlib for interactive use with the default matplotlib backend.
# c.IPKernelApp.matplotlib = none
đến
# Configure matplotlib for interactive use with the default matplotlib backend.
c.IPKernelApp.matplotlib = 'inline'
Điều này sau đó sẽ hoạt động trong cả phiên ipython qtconsole và notebook.