สรุป (tldr)
หากคุณต้องการให้เคอร์เนล 'python3' เรียกใช้การติดตั้ง Python จากสภาพแวดล้อมที่เปิดใช้งานอยู่ให้ลบเคอร์เนลของผู้ใช้ 'python3' ซึ่งสำคัญกว่าสภาพแวดล้อมปัจจุบันด้วย:
jupyter kernelspec remove python3
โซลูชันเต็มรูปแบบ
ฉันจะโพสต์ทางเลือกและวิธีที่ง่ายกว่าสำหรับกรณีต่อไปนี้:
- คุณได้สร้างสภาพแวดล้อม conda
- สภาพแวดล้อมนี้ติดตั้ง jupyter (ซึ่งติดตั้ง ipykernel ด้วย)
- เมื่อคุณเรียกใช้คำสั่ง
jupyter notebook
และสร้างสมุดบันทึกใหม่โดยคลิก 'python3' ในเมนูแบบเลื่อนลง 'ใหม่' สมุดบันทึกนั้นจะเรียกใช้งานหลามจากสภาพแวดล้อมพื้นฐานไม่ใช่จากสภาพแวดล้อมปัจจุบัน
- คุณต้องการให้การเปิดใช้งานสมุดบันทึกใหม่ด้วย 'python3' ภายในสภาพแวดล้อมใด ๆ ดำเนินการเวอร์ชัน Python จากสภาพแวดล้อมนั้นไม่ใช่ฐาน
ฉันจะใช้ชื่อ 'test_env' สำหรับสภาพแวดล้อมสำหรับโซลูชันที่เหลือ นอกจากนี้โปรดทราบว่า 'python3' เป็นชื่อของเคอร์เนล
คำตอบที่ได้รับคะแนนสูงสุดในปัจจุบันใช้งานได้ แต่มีทางเลือกอื่น มันบอกว่าจะทำต่อไปนี้:
python -m ipykernel install --user --name test_env --display-name "Python (test_env)"
นี้จะช่วยให้คุณเลือกในการใช้สภาพแวดล้อม test_env โดยไม่คำนึงถึงสภาพแวดล้อมของสิ่งที่คุณเปิดjupyter notebook
จาก แต่การเปิดตัวโน้ตบุ๊กด้วย 'python3' จะยังคงใช้การติดตั้ง Python จากสภาพแวดล้อมพื้นฐาน
สิ่งที่น่าจะเกิดขึ้นคือมีเคอร์เนลผู้ใช้ python3 ที่มีอยู่ รันคำสั่งjupyter kernelspec list
เพื่อแสดงรายการสภาวะแวดล้อมทั้งหมดของคุณ ตัวอย่างเช่นหากคุณมี mac คุณจะถูกส่งกลับดังต่อไปนี้ (ชื่อผู้ใช้ของฉันคือ Ted)
python3 /Users/Ted/Library/Jupyter/kernels/python3
สิ่งที่ Jupyter กำลังทำอยู่ที่นี่คือการค้นหาเส้นทางที่แตกต่างกันสามเส้นทางเพื่อค้นหาเมล็ด มันจะไปจากผู้ใช้เพื่อEnvเพื่อระบบ ดูเอกสารนี้สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับพา ธ ที่ค้นหาแต่ละระบบปฏิบัติการ
เคอร์เนลสองตัวด้านบนมีทั้งในพา ธ ผู้ใช้ซึ่งหมายความว่าจะสามารถใช้ได้โดยไม่คำนึงถึงสภาพแวดล้อมที่คุณเปิดตัวโน๊ตบุ๊ค jupyter นี่หมายความว่าหากมีเคอร์เนล 'python3' อีกตัวที่ระดับสภาพแวดล้อมคุณจะไม่สามารถเข้าถึงได้
สำหรับฉันแล้วการเลือกเคอร์เนล 'python3' จากสภาพแวดล้อมที่คุณเปิดใช้โน้ตบุ๊กควรดำเนินการ Python จากสภาพแวดล้อมนั้น
คุณสามารถตรวจสอบเพื่อดูว่าคุณมีสภาพแวดล้อม 'python3' อื่นหรือไม่โดยดูที่ Env search path สำหรับระบบปฏิบัติการของคุณ (ดูลิงค์ไปยังเอกสารข้างต้น) สำหรับฉัน (บน mac ของฉัน) ฉันออกคำสั่งต่อไปนี้:
ls /Users/Ted/anaconda3/envs/test_env/share/jupyter/kernels
และฉันมีเคอร์เนล 'python3' อยู่ในนั้น
ขอบคุณที่แสดงความคิดเห็นปัญหา GitHub นี้ (ดูการตอบกลับครั้งแรก) คุณสามารถลบสภาพแวดล้อมของผู้ใช้ 'python3' ด้วยคำสั่งต่อไปนี้:
jupyter kernelspec remove python3
ตอนนี้เมื่อคุณรันjupyter kernelspec list
สมมติว่า test_env ยังทำงานอยู่คุณจะได้รับสิ่งต่อไปนี้:
python3 /Users/Ted/anaconda3/envs/test_env/share/jupyter/kernels/python3
ขอให้สังเกตว่าเส้นทางนี้อยู่ภายในไดเรกทอรี test_env หากคุณสร้างสภาพแวดล้อมใหม่ให้ติดตั้ง jupyter เปิดใช้งานและแสดงรายการเมล็ดคุณจะได้รับเคอร์เนล 'python3' อีกอันที่อยู่ในพา ธ ของสภาพแวดล้อม
เคอร์เนล 'python3' ของผู้ใช้มีความสำคัญเหนือกว่าเมล็ดใด ๆ ของ python3 'Env โดยการลบมันเคอร์เนล 'python3' ของสภาพแวดล้อมที่ใช้งานจะถูกเปิดเผยและสามารถเลือกได้ทุกครั้ง สิ่งนี้ทำให้ไม่จำเป็นต้องสร้างเมล็ดด้วยตนเอง นอกจากนี้ยังทำให้เข้าใจได้ง่ายขึ้นในแง่ของการพัฒนาซอฟต์แวร์ที่ต้องการแยกตัวเองออกเป็นสภาพแวดล้อมเดียว การใช้เคอร์เนลที่แตกต่างจากสภาพแวดล้อมโฮสต์นั้นดูไม่เป็นธรรมชาติ
ดูเหมือนว่าผู้ใช้รายนี้ 'python3' จะไม่ได้รับการติดตั้งสำหรับทุกคนโดยค่าเริ่มต้นดังนั้นทุกคนจะไม่พบกับปัญหานี้
conda install ipykernel
ในสภาพแวดล้อมนั้น