Tóm tắt (tldr)
Nếu bạn muốn hạt nhân 'python3' luôn chạy cài đặt Python từ môi trường nơi nó được khởi chạy, hãy xóa hạt nhân 'python3' của người dùng, nó được ưu tiên hơn bất cứ môi trường hiện tại nào:
jupyter kernelspec remove python3
Giải pháp đầy đủ
Tôi sẽ đăng một giải pháp thay thế và đơn giản hơn cho trường hợp sau:
- Bạn đã tạo ra một môi trường conda
- Môi trường này đã cài đặt jupyter (cũng cài đặt ipykernel)
- Khi bạn chạy lệnh
jupyter notebook
và tạo sổ ghi chép mới bằng cách nhấp vào 'python3' trong menu thả xuống 'Mới', sổ ghi chép đó sẽ thực thi python từ môi trường cơ sở chứ không phải từ môi trường hiện tại.
- Bạn muốn nó khởi chạy một notebook mới với 'python3' trong bất kỳ môi trường nào thực thi phiên bản Python từ môi trường đó và KHÔNG phải là cơ sở
Tôi sẽ sử dụng tên 'test_env' cho môi trường cho phần còn lại của giải pháp. Ngoài ra, lưu ý rằng 'python3' là tên của kernel.
Câu trả lời được bình chọn hàng đầu hiện nay có tác dụng, nhưng có một cách khác. Nó nói để làm như sau:
python -m ipykernel install --user --name test_env --display-name "Python (test_env)"
Điều này sẽ cung cấp cho bạn tùy chọn sử dụng môi trường test_env bất kể bạn khởi chạy jupyter notebook
từ môi trường nào . Nhưng, khởi chạy một notebook với 'python3' vẫn sẽ sử dụng cài đặt Python từ môi trường cơ sở.
Những gì có khả năng đang xảy ra là có một kernel python3 tồn tại. Chạy lệnh jupyter kernelspec list
để liệt kê tất cả các môi trường của bạn. Chẳng hạn, nếu bạn có máy mac, bạn sẽ được trả lại như sau (tên người dùng của tôi là Ted).
python3 /Users/Ted/Library/Jupyter/kernels/python3
Những gì Jupyter đang làm ở đây là tìm kiếm thông qua ba con đường khác nhau để tìm hạt nhân. Nó đi từ Người dùng , đến Env , đến Hệ thống . Xem tài liệu này để biết thêm chi tiết về các đường dẫn mà nó tìm kiếm cho mỗi hệ điều hành.
Hai hạt nhân ở trên đều nằm trong đường dẫn Người dùng, nghĩa là chúng sẽ có sẵn bất kể môi trường mà bạn khởi chạy sổ ghi chép jupyter từ đó. Điều này cũng có nghĩa là nếu có một hạt nhân 'python3' khác ở cấp độ môi trường, thì bạn sẽ không bao giờ có thể truy cập nó.
Đối với tôi, điều có ý nghĩa hơn là việc chọn kernel 'python3' từ môi trường mà bạn đã khởi chạy notebook từ đó sẽ thực thi Python từ môi trường đó.
Bạn có thể kiểm tra xem bạn có môi trường 'python3' khác hay không bằng cách tìm trong đường dẫn tìm kiếm Env cho HĐH của bạn (xem liên kết đến các tài liệu ở trên). Đối với tôi (trên máy mac), tôi đã ban hành lệnh sau:
ls /Users/Ted/anaconda3/envs/test_env/share/jupyter/kernels
Và tôi thực sự đã có một hạt nhân 'python3' được liệt kê ở đó.
Nhờ nhận xét vấn đề GitHub này (xem phản hồi đầu tiên), bạn có thể xóa môi trường Người dùng 'python3' bằng lệnh sau:
jupyter kernelspec remove python3
Bây giờ khi bạn chạy jupyter kernelspec list
, giả sử test_env vẫn hoạt động, bạn sẽ nhận được những điều sau:
python3 /Users/Ted/anaconda3/envs/test_env/share/jupyter/kernels/python3
Lưu ý rằng đường dẫn này nằm trong thư mục test_env. Nếu bạn tạo một môi trường mới, cài đặt jupyter, kích hoạt nó và liệt kê các hạt nhân, bạn sẽ nhận được một hạt nhân 'python3' khác nằm trong đường dẫn môi trường của nó.
Hạt nhân 'python3' được ưu tiên hơn bất kỳ hạt nhân Env 'python3' nào. Bằng cách loại bỏ nó, hạt nhân 'python3' của môi trường hoạt động đã bị lộ và có thể được chọn mỗi lần. Điều này giúp loại bỏ sự cần thiết phải tự tạo hạt nhân. Nó cũng có ý nghĩa hơn về mặt phát triển phần mềm, nơi người ta muốn tự cô lập mình trong một môi trường duy nhất. Chạy kernel khác với môi trường máy chủ có vẻ không tự nhiên.
Dường như Người dùng 'python3' này không được cài đặt cho mọi người theo mặc định, vì vậy không phải ai cũng phải đối mặt với vấn đề này.
conda install ipykernel
trong môi trường đó.