2012-02-21 34 views
81

Tôi đã gặp sự cố với Python, iPython và các thư viện. Các điểm sau đây cho thấy chuỗi các vấn đề. Tôi đang chạy Python 2.7 trên Mac Lion.ipython đọc phiên bản python sai

  1. iPython không đọc thư viện scipy, matplotlib, nhưng nó không đọc được.
  2. Để khắc phục điều này, tôi đã thử cài đặt phiên bản mã nguồn của Python và nó chỉ cho tôi nhiều vấn đề hơn kể từ bây giờ tôi có hai phiên bản khác nhau: 2.7.1 và 2.7.2
  3. Tôi nhận thấy rằng đang chạy Python, sử dụng phiên bản 2.7. 2 và không nhập khẩu scipy, matplotlib, và numpy, nhưng trên iPython phiên bản là 2.7.1 mà không mở scipy hoặc matplotlib.

Tôi đã thử một số điều mà tôi đã gặp phải từ các blogpost khác. Nhưng không ai trong số họ đã giúp, và cũng tiếc là tôi không hoàn toàn biết những gì tôi đang làm với một số người trong số họ. Ví dụ: Tôi đã thử gỡ cài đặt và cài đặt lại ipython bằng easy_install và pip. Tôi cũng đã thử cài đặt lại mọi thứ thông qua homebrew và sửa đổi đường dẫn .bash_profile.

+3

Lệnh 'kịch bản ipython' được "gắn" lên phiên bản Python cụ thể đó là được cài đặt - nó sẽ không tự động chuyển sang những gì bạn đã cài đặt cuối cùng. Nếu bạn lần đầu tiên cài đặt 2.7.1, sau đó là IPython, sau đó là 2.7.2 từ nguồn, IPython của bạn sẽ tiếp tục sử dụng 2.7.1. Bạn cần phải hoàn tác tất cả các lỗi của bạn, quay trở lại phiên bản Python gốc của bạn và tìm ra lý do đằng sau điểm 1; thay vào đó, cài đặt lại IPython bằng cách sử dụng bất kỳ cài đặt Python nào có thể truy cập các thư viện bạn cần. – millimoose

+0

Bạn có thể cụ thể hơn không? ... cảm ơn – Diego

+0

Cụ thể về phần nào? Làm thế nào khởi động IPython hoạt động, hoặc làm thế nào để làm cho vấn đề biến mất? – millimoose

Trả lời

128

rồi sửa chữa nhanh chóng:

which python 

mang đến cho bạn /usr/bin/python, phải không? Do

which ipython 

và tôi đặt cược rằng sẽ là /usr/local/bin/ipython. Chúng ta hãy nhìn vào bên trong:

Sửa 9/7/16 - Các tập tin bây giờ trông như thế này:

cat /usr/local/bin/ipython 

#!/usr/bin/python 

# -*- coding: utf-8 -*- 
import re 
import sys 

from IPython import start_ipython 

if __name__ == '__main__': 
    sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) 
    sys.exit(start_ipython()) 

Và tôi làm việc đúng như thế này, nhưng hoàn cảnh của tôi không phải là chính xác như OP của.


Original câu trả lời - 9/30/13:

cat /usr/local/bin/ipython 

#!/usr/bin/python 
# EASY-INSTALL-ENTRY-SCRIPT: 'ipython==0.12.1','console_scripts','ipython' 
__requires__ = 'ipython==0.12.1' 
import sys 
from pkg_resources import load_entry_point 

if __name__ == '__main__': 
    sys.exit(
     load_entry_point('ipython==0.12.1', 'console_scripts', 'ipython')() 
    ) 

Aha - mở /usr/local/bin/ipython trong trình soạn thảo của bạn (với quyền), và thay đổi dòng đầu tiên để

#!/usr/local/bin/python 

lưu, khởi động iPython, nên nói nó đang sử dụng phiên bản bạn muốn bây giờ.

+25

nghi ngờ , 'python -m IPython' tương đương với' ipython', hy vọng bạn chắc chắn sử dụng đúng Python. – Matt

+0

cũng nhớ đóng thiết bị đầu cuối và mở một thiết bị đầu cuối mới. kể từ khi PATH được lưu trữ bởi shell cho hiệu quả. đây là cách tôi nhận được giải pháp này làm việc cho tôi. xem: http://conda.pydata.org/docs/troubleshooting.html#shell-command-location – putonspectacles

6

Trước tiên, tôi sẽ đảm bảo bạn đang sử dụng đúng con trăn. Tại loại nhắc lệnh:

which python 
python -V 

Đầu tiên sẽ cho bạn biết đường dẫn, thứ hai cho bạn biết phiên bản Python bạn đang sử dụng.

+0

Được rồi, nó cho tôi Python 2.7.2 trên/usr/local/bin/python – Diego

8

Điều gì về việc sử dụng virtualenv? Tôi thực sự thích nó. Có lẽ nó không phải là cách nhanh hơn, nhưng tôi nghĩ nó rất rõ ràng.

Khi bạn tạo virtualenv, bạn có thể chỉ định đường dẫn python với cờ -p.

cho trăn 2.7

$ virtualenv -p /usr/bin/python2.7 venv2.7 
$ source venv2.7/bin/activate 
(venv2.7)$ pip install ipython 
(venv2.7)$ ipython 

cho python 3,4

$ virtualenv -p /usr/bin/python3.4 venv3.4 
$ source venv3.4/bin/activate 
(venv3.4)$ pip install ipython 
(venv3.4)$ ipython 
+2

Đây là một chủ đề cũ, nhưng tôi cũng đã đi qua virtualenvs và như họ tốt đẹp cho phát triển sản phẩm. Tuy nhiên, với mục đích phân tích "hàng ngày", tôi chỉ muốn có một phiên bản python/ipython có thể sử dụng được trong hệ thống của tôi. – Diego

+1

điều này không hoạt động btw –

+0

'python -m IPython' sẽ khởi động ipython với phiên bản đã cho của' python' –

1

Một phương pháp tương tự như sử dụng pyenv

pyenv install 3.4.5 
pyenv local 3.4.5 
pip install ipython 
ipython 

Bây giờ nó sẽ hiển thị phiên bản đúng của python

Python 3.4.5 
1

Cách đơn giản nhất giải pháp tuyệt đối tôi có thể nghĩ ra, mà không yêu cầu phải loay hoay với môi trường, các file cài đặt, hoặc bất cứ thứ gì, dựa vào các dữ kiện mà

  1. Các thực thi ipython thực sự là một kịch bản Python.
  2. Gói IPython được cài đặt riêng cho từng thông dịch viên mà bạn chạy pip intall với.

Nếu phiên bản của Python bạn đang runninig với đã cài đặt một gói IPython, bạn chỉ có thể làm

/path/to/desired/python $(which ipython) 

này sẽ chạy script ipython với người phiên dịch mà bạn muốn thay vì một trong những liệt kê trong shebang.

+0

Thay vì gọi điện thoại ở trên mỗi lần, làm thế nào để đặt nó làm mặc định, để mỗi khi tôi gõ 'ipython' vào trong trình bao, nó sẽ tự động đọc trình thông dịch tùy chỉnh thay vì mặc định? – ThePredator

+0

Thêm tập lệnh thực hiện điều đó vào đường dẫn trước mặc định. Nhưng bạn phải gây rối với môi trường để làm điều đó. –

0

Vấn đề của bạn về cơ bản là làm cho ipython sử dụng đúng python.

để sửa chữa cho vấn đề là làm cho ipython sử dụng python đúng (trong đó có các thư viện như scipy cài đặt)

Tôi đã viết một giải pháp ở đây:

How to make iPython use Python 2 instead of Python 3

0

Tôi đã xem qua cùng một vấn đề nhưng sau đây là giải pháp duy nhất làm việc cho tôi trên OSX 12, Sierra.

ipython luôn được khởi chạy cho python 3.6 nhưng tôi cần nó cho 2.7. Tôi không thể tìm thấy tập lệnh khởi động ipython cho 2.7, cũng như tôi không thể tìm thấy mô-đun IPython để thực thi với python -m. Không ai trong số brew instally ipythonpip install ipython hoặc pip2 install ipython có thể lấy cho tôi phiên bản 2.7. Vì vậy, tôi đã nhận nó bằng tay.

brew install [email protected] cài đặt phiên bản 2.7 từ here nhưng sẽ không đặt nó trên $PATH vì nó biết tên xung đột với gói khác. ln -s /usr/local/Cellar/[email protected]/5.5.0_1/bin/ipython /usr/local/bin/ipython2 sẽ sửa lỗi này và cho phép bạn chỉ cần chạy ipython2 từ vỏ của bạn nhắc

Đối với tôi, bởi vì tôi đang nói nghiêm túc về việc sử dụng ipython cho 2.7, tôi cũng chạy các lệnh sau.

ln -s /usr/local/Cellar/ipython/6.2.1/bin/ipython /usr/local/bin/ipython3 
rm -f /usr/local/bin/ipython 
ln -s /usr/local/bin/ipython2 /usr/local/bin/ipython 
0

Giải pháp của tôi đơn giản, ngu ngốc nhưng hiệu quả.

tôi sử dụng python -V chắc chắn những gì phiên bản là

$ python -V 
Python 2.7.10 

và sau đó làm bí danh trong .bash_profile

$ vi ~/.bash_profile 

Thêm một dòng

alias ipython="python -m IPython" 

sau đó bạn sẽ nhận được một ipython trong python 2.7.

(Bằng cách này, tôi ipython là cài đặt qua homebrew, nó mặc định sẽ có một chạy ipython trong python 3.)

$ brew install ipython 
Các vấn đề liên quan