2016-06-17 32 views
17

Tôi đã nhận được bản thân mình vào một số loại lộn xộn virtualenv khủng khiếp. Cứu giúp?!jupyter máy tính xách tay chạy hạt nhân trong env khác nhau

Tôi quản lý môi trường với conda. Cho đến gần đây, tôi chỉ có một hạt nhân máy tính xách tay python2 jupyter, nhưng tôi quyết định kéo bản thân mình đá và la hét vào thế kỷ 21 và cài đặt một hạt nhân python3; Tôi quên mất tôi đã làm thế nào.

python chính (anaconda) mặc định là 2,7. Vì vậy, ở đây tôi đang vui vẻ cố gắng sử dụng món súp tuyệt đẹp từ bên trong hạt python3 mới sáng bóng của tôi, và tôi dường như không thể làm bất cứ điều gì để tìm kiếm bất cứ môi trường nào mà nó tìm thấy gói.):

from bs4 import BeautifulSoup 

-> ImportError: No module named 'bs4' 

Ok, tốt, tôi sẽ cài đặt nó bằng cách sử dụng ma thuật vỏ. Đúng? Đúng?

! pip install bs4 

--> Collecting bs4 
    Downloading bs4-0.0.1.tar.gz 
Requirement already satisfied (use --upgrade to upgrade): beautifulsoup4 in /Users/[MY-USER]/anaconda/lib/python2.7/site-packages (from bs4) 
[...] 
Successfully built bs4 
Installing collected packages: bs4 
Successfully installed bs4-0.0.1 

from bs4 import BeautifulSoup 

-> ImportError: No module named 'bs4' 

Ồ không. Liệu nó nghĩ rằng tôi đang ở trong một 2,7 env mặc dù tôi đang chạy một hạt nhân python3? Điều đó sẽ không làm.

! conda info --envs 
--> # conda environments: 
# 
flaskenv     /Users/[MY-USER]/anaconda/envs/flaskenv 
mesa      /Users/[MY-USER]/anaconda/envs/mesa 
py35      /Users/[MY-USER]/anaconda/envs/py35 
root     * /Users/[MY-USER]/anaconda 

Ok, tôi có thể khắc phục điều đó. Một trong số đó là 3.5 env.

! source activate py35 
--> prepending /Users/[MY-USER]/anaconda/envs/py35/bin to PATH 

! conda install beautifulsoup4 
--> Fetching package metadata ....... 
Solving package specifications: .......... 

# All requested packages already installed. 
# packages in environment at /Users/[MY-USER]/anaconda: 
# 
beautifulsoup4   4.4.1     py27_0 

liên quan đến ...

! pip install bs4 
--> Requirement already satisfied (use --upgrade to upgrade): bs4 in /Users/[MY-USER]/anaconda/lib/python2.7/site-packages 

liên quan đến nhiều ...

from bs4 import BeautifulSoup 

-> ImportError: No module named 'bs4' 

ARRGH !!! headdesk Tôi sẽ phải giết hạt nhân để sửa lỗi này (và chạy lại một chút công việc)? Đang giết hạt nhân thậm chí sẽ làm việc? Làm thế nào để hạt nhân jupyter của tôi biết được môi trường nào được cho là chạy dưới?

cảm ơn!

Trả lời

53

Đây là một phần phức tạp của ipython/Jupyter. Tập hợp các hạt nhân có sẵn độc lập với virtualenv của bạn khi bạn khởi động Máy tính xách tay jupyter. Bí quyết là thiết lập gói ipykernel trong môi trường mà bạn muốn tự nhận dạng duy nhất cho jupyter. Từ docs on multiply ipykernels,

source activate ENVNAME 
pip install ipykernel 
python -m ipykernel install --user --name ENVNAME --display-name "Python (whatever you want to call it)" 

Nếu bạn chỉ muốn có một đơn kernel Python 3, từ môi trường conda, chỉ cần sử dụng python -m ipykernel install --user và nó sẽ thiết lập lại python mặc định cho một trong virtualenv.

Và có, bạn sẽ cần khởi động lại hạt nhân và chạy lại các bước trước đó.

Xem Cũng Using both Python 2.x and Python 3.x in IPython Notebook

+0

Cảm ơn bạn! Làm việc như người ở. –

+0

Cảm ơn bạn, bạn đã cứu ngày của tôi !! –

1

@ giải pháp tschundler của hoạt động hoàn hảo nếu môi trường của bạn đã được tạo ra.

Nếu bạn muốn thay đổi kernel mặc định ở việc tạo ra các môi trường ảo của bạn và tránh bất kỳ cấu hình thủ công, bạn chỉ cần thêm jupyter vào cuối lệnh conda:

conda create --name ENVNAME python=PYTHONVERSION jupyter

Các đúng hạt nhân sau đó sẽ được sử dụng khi bạn sử dụng sổ ghi chép ipython hoặc jupyter.

Các vấn đề liên quan