2016-08-08 23 views
7

Cập nhật: ipykeynel 4.4.1 vá vấn đề này vào buổi sáng của tháng tám 9.Thất bại trong việc nhập khẩu matplotlib.pyplot trong jupyter (nhưng không ipython)

Tôi đã cài đặt một tươi và tôi đã cố gắng để có được sự phụ thuộc python của tôi lên và chạy , cụ thể là jupyter notebook và matplotlib. Tôi đã cài đặt tất cả mọi thứ pip và "import matplotlib" hoạt động. Nếu tôi đang ở một máy tính xách tay jupyter, và tôi cố gắng "matplotlib.pyplot nhập" hoặc "từ pyplot matplotlib nhập khẩu theo plt", tôi nhận được:

ImportError        Traceback (most recent call last) 
... 
/usr/local/lib/python2.7/dist-packages/IPython/core/pylabtools.pyc in configure_inline_support(shell, backend) 
    359  except ImportError: 
    360   return 
--> 361  from matplotlib import pyplot 
    362 
    363  cfg = InlineBackend.instance(parent=shell) 

ImportError: cannot import name pyplot 

Full traceback

Tuy nhiên, nếu tôi đang ở ipython (dòng lệnh), điều này hoạt động tốt. Ngoài ra, chạy các lô từ một mô-đun từ dòng lệnh, tốt. Tôi đã cố gắng rất nhiều kỹ thuật:

  • Pip cài đặt/gỡ bỏ cài đặt matplotlib, ipython, và jupyter theo thứ tự khác nhau
  • Sử dụng pip với --no-cache-dir và/hoặc --ignore cài
  • Xóa ~/.cache, ~/.ipython và ~/.jupyter
  • Đảm bảo không có gói được cài đặt với apt-get, chỉ cài đặt với pip
  • Sử dụng apt-get để cài đặt python-matplotlib, ipython, và python-jupyter

Có vẻ như tôi đã đọc sai một số thông tin đường dẫn, nhưng tôi không thể xác định vị trí hoặc địa điểm nào sẽ gây ra điều này, đặc biệt sau khi gỡ bỏ nhiều pip/cài đặt lại và xóa bộ nhớ cache. Tôi đã đọc tất cả các câu hỏi SO liên quan đến nhập khẩu matplotlib, không ai có ích.

Tôi quay lại matplotlib 1.4.3 và đã hoạt động nhưng thiếu một số tính năng tôi cần. Tôi nhận ra điều này có lẽ là một điều khó khăn, vì vậy nếu bạn có bất kỳ thông tin chi tiết nào, ngay cả khi chưa hoàn thành, điều đó sẽ được đánh giá cao. Ngoài ra, nếu đây là một cái gì đó xứng đáng với một báo cáo lỗi (không bao giờ thực hiện một, không chắc chắn nếu đây là một vấn đề matplotlib, hoặc chỉ cục bộ goofed lên), bình luận như vậy và tôi sẽ gửi một. Cảm ơn!

thông tin hệ thống:

Linux Mint 18 "Sarah" 
Python==2.7.12 
ipykernel==4.4.0 
ipython==5.0.0 
ipython-genutils==0.1.0 
ipywidgets==5.2.2 
jupyter==1.0.0 
jupyter-client==4.3.0 
jupyter-console==5.0.0 
jupyter-core==4.1.0 
notebook==4.2.2 
numpy==1.11.1 
pip 8.1.2 from /usr/local/lib/python2.7/dist-packages (python 2.7) 

Sản lượng sys.path trong ipython và jupyter (tương tự cho cả hai):

['', 
'/usr/local/bin', 
'/usr/lib/python2.7', 
'/usr/lib/python2.7/plat-x86_64-linux-gnu', 
'/usr/lib/python2.7/lib-tk', 
'/usr/lib/python2.7/lib-old', 
'/usr/lib/python2.7/lib-dynload', 
'/usr/local/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages/PILcompat', 
'/usr/lib/python2.7/dist-packages/gtk-2.0', 
'/usr/lib/python2.7/dist-packages/ubuntu-sso-client', 
'/usr/local/lib/python2.7/dist-packages/IPython/extensions', 
'/home/mm/.ipython'] 
+3

Hài hước, đã gặp phải vấn đề này sáng nay, câu hỏi của bạn là kết quả tìm kiếm duy nhất có liên quan trực tiếp trên Google. Dường như dưới một số kết hợp của các phiên bản gói, khởi tạo phần cuối "nội tuyến" dẫn đến việc nhập khẩu vòng tròn của 'matplotlib.pyplot'. Đây là lý do tại sao tất cả mọi thứ là tốt trong vỏ Python và IPython (họ sử dụng hệ thống phụ trợ mặc định). –

+0

@IgorRaush Tôi vừa học về các tính năng phụ trợ ngày hôm qua, sau khi nhận được chán và chuyển sang Ipy3 (chỉ yêu cầu thay đổi 5 dòng trong thư viện của tôi, yay __future__!) Và phát hiện ra nó mặc định nội tuyến. Tôi thích zoom tương tác nhiều thời gian. Cố gắng để có được Qt5 để làm việc là một xô của _fun_. Mẹo chuyên nghiệp của Python: kiểm tra phần phụ trợ trong Ipy bằng 'matplotlib.get_backend()' – DeusXMachina

Trả lời

5

Tôi có cùng một vấn đề, và các vấn đề có thể được sản xuất bởi ipykernel. sau khi tôi quay lại phiên bản ipykernel thành 4.3.1. vấn đề được giải quyết.

giống như @Igor Raush nói, nó giống như hình tròn nhập khẩu của matplotlib.pyplot.

+0

Aha! Điều này cố định nó! Tôi đoán đó là một lỗi. Tôi sẽ gửi nó. – DeusXMachina

1

As mentioned here, bằng cách sử dụng dòng ma thuật %matplotlib cho phép tôi sử dụng chương trình phụ trợ trong cửa sổ mới (Qt4Agg trong trường hợp của tôi). Tôi không biết bạn có thể tự mình sử dụng %matplotlib mà không cần tranh cãi. Mặc dù bản cập nhật cho số ipykernel 4.4.1 khắc phục sự cố này, tôi nghĩ rằng thủ thuật ma thuật khá thông minh và có thể làm rõ các lỗi/lỗi nhập khác trong tương lai.

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