Sử dụng cả Python 2.x và Python 3.x trong IPython Notebook


255

Tôi sử dụng sổ ghi chép IPython và muốn có thể chọn để tạo sổ ghi chép python 2.x hoặc 3.x trong IPython.

Tôi ban đầu có Anaconda. Với Anaconda, một biến môi trường toàn cầu đã được thay đổi để chọn phiên bản python nào bạn muốn và sau đó IPython có thể được bắt đầu. Đây không phải là thứ tôi đang tìm kiếm nên tôi đã gỡ cài đặt Anaconda và bây giờ đã thiết lập cài đặt của riêng tôi bằng MacPorts và PiP. Dường như tôi vẫn phải sử dụng

port select --set python <python version> 

chuyển đổi giữa python 2.x và 3.x. không tốt hơn giải pháp anaconda.

Có cách nào để chọn phiên bản python nào bạn muốn sử dụng sau khi bạn khởi động sổ ghi chép IPython, tốt nhất là với bản dựng MacPorts hiện tại của tôi không?


Câu trả lời:


336

Ý tưởng ở đây là cài đặt nhiều ipythonhạt nhân. Dưới đây là hướng dẫn cho Anaconda. Nếu bạn không sử dụng anaconda, gần đây tôi đã thêm hướng dẫn sử dụng virtualenvs thuần túy.

Anaconda> = 4.1.0

Kể từ phiên bản 4.1.0, anaconda bao gồm một gói đặc biệt nb_conda_kernelsphát hiện môi trường conda với hạt nhân máy tính xách tay và tự động đăng ký chúng. Điều này làm cho việc sử dụng phiên bản python mới dễ dàng như tạo môi trường conda mới:

conda create -n py27 python=2.7 ipykernel
conda create -n py36 python=3.6 ipykernel

Sau khi khởi động lại máy tính xách tay jupyter, các hạt nhân mới có sẵn trên giao diện đồ họa. Xin lưu ý rằng các gói mới phải được cài đặt rõ ràng vào môi trường mới. Phần môi trường quản lý trong tài liệu của conda cung cấp thêm thông tin.

Hạt nhân đăng ký

Người dùng không muốn sử dụng nb_conda_kernelshoặc vẫn sử dụng các phiên bản cũ hơn của anaconda có thể sử dụng các bước sau để đăng ký thủ công hạt nhân ipython.

cấu hình python2.7môi trường:

conda create -n py27 python=2.7
conda activate py27
conda install notebook ipykernel
ipython kernel install --user

cấu hình python3.6môi trường:

conda create -n py36 python=3.6
conda activate py36
conda install notebook ipykernel
ipython kernel install --user

Sau đó, bạn sẽ có thể chọn giữa python2
python3khi tạo một sổ ghi chép mới trong giao diện.

Ngoài ra, bạn có thể chuyển các tùy chọn --namevà nếu bạn muốn thay đổi tên của hạt nhân. Xem để biết thêm thông tin.--display-nameipython kernel installipython kernel install --help


Giải pháp của bạn trông rất giống với giải pháp tôi đã sử dụng và về nguyên tắc tôi sẽ mong đợi nó hoạt động. Vì tôi đã gỡ cài đặt anaconda và làm việc này nên tôi sẽ không thể xác minh.
deltap

9
Nếu bạn muốn thiết lập kernelspecs mà không yêu cầu root, bạn có thể thực hiện ipython kernelspec install-self --userđể cài đặt chúng cho người dùng hiện tại.
Thomas K

1
Tôi đã tìm ra nó! Câu trả lời của bạn đã giúp! dropbox.com/s/6ayqf55ctkv2xgk/ Từ
Lập trình viên thông minh

7
Mục quan trọng là bạn phải CÀI ĐẶT nb_conda_kernels nó không đi kèm với Anaconda ban đầu của tôi! Cảm ơn!
phi tiêu

1
@cel, thực sự môi trường tôi bắt đầu jupyter từ đó không có gói nb_conda_kernels được cài đặt theo mặc định. Tôi đã không dành thời gian để đọc tất cả các ý kiến: có lẽ bạn có thể chỉnh sửa câu trả lời của mình và bao gồm bản remak của dartdog.
Antoine Gautier

276

Nếu bạn đang chạy Jupyter trên Python 3, bạn có thể thiết lập kernel Python 2 như thế này:

python2 -m pip install ipykernel

python2 -m ipykernel install --user

http://ipython.readthedocs.io/en/ sóng / install / kernel_install.html


52
Chuyển '2' thành '3' nếu bạn đã cài đặt python2 và cần python3. Tôi không hiểu tại sao đây không phải là câu trả lời hàng đầu, nó chắc chắn chiến thắng bằng dao cạo của Occam và nó hiệu quả với tôi.
lời giới thiệu

6
Hoạt động hoàn hảo. Nên là câu trả lời đầu tiên thực sự.
JSmyth

2
Lệnh python2 được bao gồm trong chính python? Xin vui lòng cho một số lời giải thích của câu trả lời này một cách công phu. :)
Verystrongjoe

3
cái này hoạt động, nhưng nó không được liên kết với hệ thống python 2 của tôi với các gói bổ sung. Có cách nào để liên kết đến một nhị phân / thực thi python hiện có không?
Rutger Hofste

1
Hoạt động hoàn hảo trong win10, chỉ cần thay thế python2bằng your\path\to\python(2).exe.
Lucien

42

Các hướng dẫn này giải thích cách cài đặt kernel python2 và python3 trong các môi trường ảo riêng biệt cho người dùng không phải là anaconda. Nếu bạn đang sử dụng anaconda, vui lòng tìm câu trả lời khác của tôi cho một giải pháp được thiết kế trực tiếp cho anaconda.

Tôi giả sử rằng bạn đã jupyter notebookcài đặt.


Trước tiên hãy chắc chắn rằng bạn có một python2và một python3thông dịch viên có pipsẵn.

Trên Ubuntu bạn sẽ cài đặt những thứ này bằng cách:

sudo apt-get install python-dev python3-dev python-pip python3-pip

Tiếp theo chuẩn bị và đăng ký môi trường kernel

python -m pip install virtualenv --user

# configure python2 kernel
python -m virtualenv -p python2 ~/py2_kernel
source ~/py2_kernel/bin/activate
python -m pip install ipykernel
ipython kernel install --name py2 --user
deactivate

# configure python3 kernel
python -m virtualenv -p python3 ~/py3_kernel
source ~/py3_kernel/bin/activate
python -m pip install ipykernel
ipython kernel install --name py3 --user
deactivate

Để làm cho mọi thứ dễ dàng hơn, bạn có thể muốn thêm bí danh shell cho lệnh kích hoạt vào tệp cấu hình shell của bạn. Tùy thuộc vào hệ thống và hệ vỏ bạn sử dụng, điều này có thể là ~/.bashrc, ~/.bash_profilehoặc~/.zshrc

alias kernel2='source ~/py2_kernel/bin/activate'
alias kernel3='source ~/py3_kernel/bin/activate'

Sau khi khởi động lại shell của bạn, bây giờ bạn có thể cài đặt các gói mới sau khi kích hoạt môi trường bạn muốn sử dụng.

kernel2
python -m pip install <pkg-name>
deactivate

hoặc là

kernel3
python -m pip install <pkg-name>
deactivate

theo dấu chấm này, cài đặt gấu trúc, khởi động jupyter, chuyển sang kernel py3: nhập gấu trúc không thành công với lỗi 'không tìm thấy'. Nó đang lái tôi bonkers
user1255933

1
@ user1255933, điều này có thể là do cài đặt với phiên bản pip sai. Điều này có thể xảy ra nếu kích hoạt môi trường đích không thành công hoặc không chứa phiên bản pip. Bạn có thể thấy câu trả lời của tôi ở đây rất thú vị: stackoverflow.com/questions/32680081/ ,.
cel

Cảm ơn bạn đã hướng dẫn sử dụng cách không phải anaconda để cài đặt kernel
mdivk

37

Với phiên bản hiện tại của Notebook / Jupyter, bạn có thể tạo kernel Python3 . Sau khi bắt đầu một ứng dụng máy tính xách tay mới từ dòng lệnh với Python 2, bạn sẽ thấy một mục „Python 3 ERIC trong menu thả xuống“ Mới. Điều này cung cấp cho bạn một sổ ghi chép sử dụng Python 3. Vì vậy, bạn có thể có hai sổ ghi chép song song với các phiên bản Python khác nhau.

Chi tiết

  1. Tạo thư mục này: mkdir -p ~/.ipython/kernels/python3
  2. Tạo tập tin ~/.ipython/kernels/python3/kernel.jsonnày với nội dung này:

    {
        "display_name": "IPython (Python 3)", 
        "language": "python", 
        "argv": [
            "python3", 
            "-c", "from IPython.kernel.zmq.kernelapp import main; main()", 
            "-f", "{connection_file}"
        ], 
        "codemirror_mode": {
            "version": 2, 
            "name": "ipython"
        }
    }
  3. Khởi động lại máy chủ máy tính xách tay.

  4. Chọn „Python 3 ăn từ menu thả xuống“ Mới
  5. Làm việc với Python 3 Notebook
  6. Chọn „Python 2 miễn phí từ menu thả xuống“ Mới
  7. Làm việc với Sổ tay Python 2

Điều này thật tuyệt và tôi đang cố gắng để nó hoạt động, nhưng bạn có thể chỉ định cách bạn bắt đầu jupytertrong kịch bản này không (tôi phải chạy ipython notebookhoặc ipython3 notebook). Ngay bây giờ tôi chỉ có thể chạy cái này hoặc cái kia (với môi trường tương ứng của chúng, nhưng tôi thấy cả hai hạt nhân được liệt kê bên trong jupyter. Bạn có thể mở rộng câu trả lời của mình để bao gồm cách bắt đầu jupyterđể tôi có thể chạy python2python3song song không? Cảm ơn!
Chris

1
Ok, tôi nghĩ rằng tôi đã tìm ra nó - tôi phải điều chỉnh kernel.jsontệp bên trong ~/Library/Jupyter/kernels/python3/(trên OS X) và thêm các đối số được đề cập trong tệp được liên kết.
Chris

@Chris Có, trong khi mô tả đằng sau liên kết được đưa ra trong IPython Notebook, nó có thể được thực hiện trong trình chỉnh sửa. Chỉ cần tạo hoặc sửa đổi một tệp có tên nhất định tại một đường dẫn cụ thể và tại nội dung được hiển thị. Rất vui vì bạn đã giải quyết vấn đề của mình.
Mike Müller

Tôi khuyên bạn nên chỉnh sửa câu trả lời của bạn để bao gồm các chi tiết từ liên kết đó. Câu trả lời không nên giữ phần quan trọng nhất "ẩn" phía sau một liên kết.
Chris

1
@Chris Đã thêm chi tiết từ liên kết.
Mike Müller

22

Một giải pháp có sẵn cho phép tôi tiếp tục cài đặt MacPorts của mình bằng cách định cấu hình Ipython kernelspec.

Yêu cầu:

  • MacPorts được cài đặt trong thư mục opt / opt
  • python 2.7 được cài đặt thông qua macports
  • python 3.4 được cài đặt thông qua macports
  • Ipython được cài đặt cho python 2.7
  • Ipython được cài đặt cho python 3.4

Đối với trăn 2.x:

$ cd /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin
$ sudo ./ipython kernelspec install-self

Đối với trăn 3.x:

$ cd /opt/local/Library/Frameworks/Python.framework/Versions/3.4/bin
$ sudo ./ipython kernelspec install-self

Bây giờ bạn có thể mở một sổ ghi chép Ipython và sau đó chọn một python 2.x hoặc một python 3.x notebook.

Chọn con trăn của bạn!


Bạn có thể vui lòng xác nhận rằng bạn có thể chạy python2python3máy tính xách tay kernel cạnh nhau trong cùng một jupyterví dụ không? Trong trường hợp này, làm thế nào chính xác để bạn bắt đầu jupyterkhông có đường dẫn xung đột? Tôi hiện chỉ có thể chạy python2hoặc python3mã bằng cách thiết lập $PATH $PYTHONPATHmôi trường thích hợp trước. Tôi có thể tránh điều này bằng cách nào đó?
Chris

Tôi có thể chạy các notebook kernel python2 hoặc python3.
deltap

Làm thế nào để bạn bắt đầu jupyter(cho rằng nó được cài đặt cho python 2.7và cho python 3.4) Bạn đã xác định $ PYTHONPATH hoặc có nguồn gốc một số môi trường ảo? Bạn chỉ đang gọi ipython notebook? Nếu vậy, cái ipythonnào đề cập đến - cái được cài đặt cho 2.7 hoặc 3.4?
Chris

Tôi chỉ đang gọi python notebook. which ipythoncho thấy nó đang trỏ đến/opt/local/Library/Frameworks/Python.framework/Versions/3.4/bin/ipython
deltap

Được rồi, tôi đã tìm ra vấn đề của mình và nó phải làm với một định nghĩa sẵn $PYTHONPATH, điều này làm cho việc chuyển đổi hạt nhân trở nên khó khăn. Tôi đã phải unset PYTHONPATHtrước khi bắt đầu ipythonvà bây giờ nó hoạt động.
Chris

18

Từ cài đặt Linux của tôi, tôi đã làm:

sudo ipython2 kernelspec install-self

Và bây giờ python 2 của tôi đã trở lại danh sách.

Tài liệu tham khảo:

http://ipython.readthedocs.org/en/latest/install/kernel_install.html


CẬP NHẬT:

Phương pháp trên hiện không được chấp nhận và sẽ bị loại bỏ trong tương lai. Phương pháp mới sẽ là:

sudo ipython2 kernel install


2
Tôi ghét dán ngẫu nhiên các lệnh vào cài đặt Ubuntu của tôi, nhưng điều này đã làm việc cho tôi.
Joseph

1
Nên là câu trả lời được chọn.
e9t

1
Tóm lại và cho biết, tôi đã áp dụng giải pháp này trên Mac OS X, hoạt động không có vấn đề gì.
Konrad

1
Tôi đã thử tất cả các câu trả lời. Nhưng điều này làm việc cho tôi. Hãy dùng thử nếu bạn đang sử dụng Ubuntu.
sinsuren

1
Và tôi nhận được ở ipython2đâu?
sudo

5

Sau đây là các bước để thêm kernel python2 vào máy tính xách tay jupyter ::

mở một thiết bị đầu cuối và tạo một môi trường python 2 mới: conda create -n py27 python=2.7

kích hoạt môi trường: Linux source activate py27hoặc windowsactivate py27

cài đặt kernel trong env: conda install notebook ipykernel

cài đặt kernel cho bên ngoài env: ipython kernel install --user

đóng env: source deactivate

Mặc dù một câu trả lời muộn hy vọng ai đó thấy nó hữu ích: p


Điều này không thêm bất cứ điều gì ngoài những gì đã được nêu rõ trong câu trả lời của @ cel .
Merv

3

Sử dụng sudo pip3 install jupyterđể cài đặt jupyter cho python3 và sudo pip install jupyterđể cài đặt máy tính xách tay jupyter cho python2. Sau đó, bạn có thể gọi ipython kernel installlệnh để kích hoạt cả hai loại sổ ghi chép để chọn trong sổ ghi chép jupyter.


1

Tôi nhìn vào thông tin tuyệt vời này và rồi tự hỏi , vì

  1. Tôi đã cài đặt python2, python3 và IPython,
  2. tôi đã cài đặt PyCharm,
  3. PyCharm sử dụng IPython cho Bảng điều khiển Python của nó,

nếu PyCharm sẽ sử dụng

  1. IPython-py2 khi Menu> Tệp> Cài đặt> Dự án> Trình thông dịch dự án == py2
  2. IPython-py3 khi Menu> Tệp> Cài đặt> Dự án> Trình thông dịch dự án == py3

Trả lời có!

PS tôi cũng đã cài đặt Python Launcher cho Windows.


0

Trong Windows 7, tôi đã cài đặt anaconda và anaconda3. Tôi đã đi vào \Users\me\anaconda\Scriptsvà thực hiện

sudo .\ipython kernelspec install-self

sau đó tôi đi vào \Users\me\anaconda3\Scriptsvà thực hiện

sudo .\ipython kernel install

(Tôi đã nhận jupyter kernelspec install-self is DEPRECATED as of 4.0. You probably want 'ipython kernel install' to install the IPython kernelspec. )

Sau khi bắt đầu jupyter notebook(trong anaconda3), tôi có một menu thả xuống gọn gàng ở góc trên bên phải trong "Mới" cho phép tôi chọn giữa các hạt nhân Python 2 odr Python 3.


0
  • Nếu bạn đang chạy anaconda trong môi trường ảo.
  • Và khi bạn tạo một notebook mới nhưng tôi không hiển thị để chọn kernel môi trường ảo.
  • Sau đó, bạn phải đặt nó vào ipykernel bằng lệnh sau
$ pip install --user ipykernel
$ python -m ipykernel install --user --name=test2
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.