ipython이 잘못된 파이썬 버전을 읽습니다.


103

Python, iPython 및 라이브러리에 문제가 있습니다. 다음 사항은 문제의 사슬을 보여줍니다. Mac Lion에서 Python 2.7을 실행하고 있습니다.

  1. iPython은 scipy, matplotlib의 라이브러리를 읽지 않지만 numpy를 읽습니다.
  2. 이 문제를 해결하기 위해 Python의 소스 코드 버전을 설치하려고했는데 이제는 2.7.1과 2.7.2의 두 가지 버전이 있기 때문에 더 많은 문제가 발생했습니다.
  3. Python을 실행하고 버전 2.7.2를 사용하고 scipy, matplotlib 및 numpy를 가져 오지만 iPython에서 버전은 2.7.1이며 scipy 또는 matplotlib를 열지 않습니다.

다른 블로그 게시물에서 접한 몇 가지를 시도했습니다. 하지만 그들 중 누구도 도와주지 않았고, 안타깝게도 제가 그들 중 일부를 어떻게하는지 잘 모르겠습니다. 예 : easy_install 및 pip를 사용하여 ipython을 제거하고 다시 설치해 보았습니다. 또한 homebrew를 통해 모든 것을 다시 설치하고 .bash_profile 경로를 수정했습니다.


6
ipython스크립트가 함께 설치된 특정 파이썬 버전에 "연결"되어 - 자동으로 마지막으로 설치 한 것을로 전환되지 않습니다. 2.7.1, IPython, 소스에서 2.7.2를 처음 설치했다면 IPython은 2.7.1을 계속 사용합니다. 모든 실수를 취소하고 원래 Python 버전으로 돌아가서 포인트 1 뒤에 이유가 무엇인지 파악해야합니다. 또는 필요한 라이브러리에 액세스 할 수있는 Python 설치를 사용하여 IPython을 다시 설치하십시오.
millimoose

좀 더 구체적
Diego-MX

1
어느 부분이 구체적입니까? IPython 시작은 어떻게 작동합니까? 또는 문제를 해결하는 방법은 무엇입니까?
millimoose

1
기본적으로 IPython 또는 easy_install과 같은 Python "프로그램"을 설치할 때 프로그램의 시작 스크립트는 항상 설치된 Python 실행 파일을 사용하도록 설정됩니다. 따라서 라이브러리없이 Python 2.7.1을 사용하고 IPython을 설치하면 IPython이 Python 2.7.1 설치 "내부"에 설치되고 ipython실행 파일에 대한 링크가 PATH에 배치됩니다. 그런 다음 소스에서 Python 2.7.2를 설치하면 새로운 별도의 Python 복사본이므로 IPython이 포함 된 기존 2.7.1을 업그레이드하지 않습니다. 따라서 IPython은 2.7.2 사본이나 그 안에있는 라이브러리를 볼 수 없습니다.
millimoose 2012

1
라이브러리는 동일하게 작동합니다. 소스에서 Python 2.7.2를 설치 한 후 numpy 등 설치 했다면 2.7.2 디렉토리에 설치되었을 가능성이 큽니다. 즉, Python 2.7.1 버전은 해당 라이브러리를 전혀 볼 수 없습니다. IPython은 2.7.1과 함께 설치되었으므로 해당 라이브러리도 볼 수 없습니다. 기본적으로 시스템에 완전히 분리 된 Python 사본을 원하는만큼 많이 가질 수 있지만 어떤 것이 무엇에 사용되는지 추적하기가 어려울 수 있습니다. 수행중인 작업을 알지 못하는 경우 기본 제공 Python 버전으로 시작하고 누락 된 라이브러리 만 다시 설치하는 것이 가장 좋습니다
millimoose

답변:


147

좋아요 빠른 수정 :

which python

제공합니다 /usr/bin/python, 그렇죠? 하다

which ipython

그리고 나는 그것이 될 것 /usr/local/bin/ipython입니다. 내부를 살펴 보겠습니다.

9/7/16 편집-이제 파일은 다음과 같습니다.

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())

그리고 내 상황은 이와 같이 제대로 작동하지만 내 상황은 OP와 정확히 같지 않습니다.


원래 답변-2013 년 9 월 30 일 :

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- /usr/local/bin/ipython편집기에서 권한으로 열고 첫 번째 줄을

#!/usr/local/bin/python

저장하고 iPython을 시작하면 지금 원하는 버전을 사용하고 있다고 표시됩니다.


41
의심스럽고은와 python -m IPython동일 ipython하며 올바른 Python을 사용해야합니다.
매트

2
터미널을 닫고 새 터미널을 여는 것도 잊지 마십시오. PATH는 효율성을 위해 쉘에 의해 캐시되기 때문입니다. 이것이 제가이 솔루션을 사용하는 방법입니다. 참조 : conda.pydata.org/docs/…
parsethis

@매트. 나도 경험했다. 내 경우는 "python -m IPython"이 내가 원하는 올바른 버전을 호출합니다. 그러나 'ipython'은 이전 python2를 사용하는 복사본을 시작했습니다. 수수께끼는 내가 "어떤 ipython"을 수행한다면, 그 파이썬 파일 내용이 분명히 정확한 virtualenv 사본을 가리키는 것입니다.
kawingkelvin

15

@Matt의 댓글을 답변으로 게시하여 더 잘 보이도록

python -m IPython

먼저 경로에서 액세스 할 수있는 Python을 사용하여 ipython을 모듈로로드합니다. 제 경우에는 하나는 사전 설치되었고 하나는 brew에서 추가했습니다. 이것은 완벽하게 작동합니다.


아마도이 질문에 대한 대답은 아니지만 "설치된 모든 파이썬 버전으로 ipython을 실행하는 방법"이라는 질문에 대한 대답입니다. 감사.
Salyangoz

9

virtualenv를 사용하는 것은 어떻습니까? 난 정말 좋아. 더 빠른 방법은 아니지만 아주 분명하다고 생각합니다.

virtualenv를 생성 할 때 -p 플래그를 사용하여 python 경로를 지정할 수 있습니다.

Python 2.7 용

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

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
이것은 오래된 스레드이지만 virtualenvs를 건너 왔으며 제품 개발에 적합합니다. 그러나 "매일"분석의 목적을 위해 내 시스템에 바로 사용할 수있는 python / ipython 버전이 있습니다.
Diego-MX

1
python -m IPython주어진 버전 ipython 시작합니다python
샤오

1
python -m IPython이 설치 가 필요합니다.pip install ipython
Xiao

6

먼저 올바른 파이썬을 사용하고 있는지 확인합니다. 명령 프롬프트에서 다음을 입력합니다.

which python
python -V

첫 번째는 경로를 알려주고 두 번째는 사용중인 Python 버전을 알려줍니다.


그래 그래서, 그것은 나에게 파이썬 2.7.2 / usr / 지방 / 빈에 / 파이썬 제공
디에고-MX

4

내 솔루션은 간단하고 어리석지 만 작동합니다.

나는 python -V어떤 버전인지 확인하기 위해 사용 합니다

$ python -V
Python 2.7.10

그런 다음 .bash_profile에서 별칭을 만드십시오.

$ vi ~/.bash_profile

줄 추가

alias ipython="python -m IPython"

그러면 ipython파이썬 2.7에서 얻을 수 있습니다. 🙂

(그런데 my ipythonis install via homebrew, it default will got an ipython run in python 3)

$ brew install ipython

2

매우 관련성 있음 : http://conda.pydata.org/docs/troubleshooting.html#shell-command-location .

td; lr 문제는 쉘 '해싱'및 경로 변수로 인해 발생합니다.


또한 일반적인 좋은 방법은 virtualenv에 ipython을 설치하는 것입니다. 당신은 which pythonVIRTUALENV 파이썬 바이너리를 가리켜 야합니다.
parsethis

셸 해싱은 virtualenv 내부에 ipython을 설치 한 후에도 나를 물었습니다. hash -r나를 위해 고쳤습니다. 감사!
theY4Kman

1

pyenv를 사용하는 유사한 방법

pyenv install 3.4.5
pyenv local 3.4.5
pip install ipython
ipython

이제 올바른 버전의 파이썬이 표시됩니다.

Python 3.4.5

1

내가 생각할 수있는 가장 간단한 솔루션은 환경, 설치된 파일 등을 조작 할 필요가 없으며 다음과 같은 사실에 의존합니다.

  1. 실행 파일 ipython은 실제로 Python 스크립트입니다.
  2. IPython 패키지는 pip intall함께 실행 한 각 인터프리터에 대해 별도로 설치됩니다 .

실행중인 Python 버전에 IPython 패키지가 설치되어있는 경우 다음을 수행 할 수 있습니다.

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

그러면 ipythonshebang에 나열된 것 대신 원하는 인터프리터로 스크립트 가 실행 됩니다.


매번 위를 호출하는 대신 ipython쉘에 입력 할 때마다 기본값 대신 사용자 정의 인터프리터를 자동으로 읽도록 기본값으로 설정하는 방법은 무엇입니까?
Srivatsan

이를 수행하는 스크립트를 기본값 앞에 경로에 추가하십시오. 하지만 그렇게하려면 환경을 엉망으로 만들어야합니다.
미친 물리학


0

나는 같은 문제를 발견했지만 다음은 OSX 12, Sierra에서 나를 위해 일한 유일한 해결책이었습니다.

ipython은 항상 python 3.6 용으로 출시되었지만 2.7 용으로 필요했습니다. 2.7 용 ipython 시작 스크립트를 찾을 수 없으며 .NET과 함께 실행할 IPython 모듈을 찾을 수 없습니다 python -m. 아무도 brew instally ipython pip install ipython또는 pip2 install ipython나에게 2.7 버전을 얻을 수 있습니다. 그래서 수동으로 얻었습니다.

brew install ipython@5여기 에서 2.7 버전을 설치 하지만 $PATH이름이 다른 패키지와 충돌한다는 것을 알고 있기 때문에 사용자에게 적용하지 않습니다 . ln -s /usr/local/Cellar/ipython@5/5.5.0_1/bin/ipython /usr/local/bin/ipython2이 문제를 해결하고 ipython2쉘 프롬프트에서 실행할 수 있습니다.

저에게는 2.7에 ipython을 사용하는 것에 대해 진지하게 생각했기 때문에 다음 명령도 실행했습니다.

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

여기에 언급 된 모든 답변은 아나콘다 또는 다른 가상 환경 래퍼를 사용하는 경우 문제 해결에 도움이되지 않습니다.

이 답변은 아나콘다를 사용하고 있다는 가정을 기반으로합니다.

python 3 환경에 있고 jupyter 노트북에서 노트북을 만들 때 "Python 3"대신 "Python 2"가 표시됩니다.

이것은 "ipython"이 기본적으로 실행되는 스크립트이고이 스크립트에서 명령을 실행하는 데 사용하는 Python 버전을 언급하기 때문입니다. ipython이 원하는 버전의 파이썬을 사용하도록이 줄을 변경하기 만하면됩니다.

먼저 ipython 서버를 중지하고 "which python"명령을 사용하여 현재 환경의 Python 실행 파일 위치를 가져옵니다.

내 출력은 다음과 같습니다.

/home/sourabh/anaconda2/envs/py3/bin/python

이제 ipython의 실행 가능한 위치를 얻으려면 "which ipython"명령을 사용합니다.

내 것 :

/home/sourabh/anaconda2/envs/py2/bin/python

다른 버전의 파이썬을 사용하고 있습니다. 다른 버전의 python을 실행하는 특정 환경의 python, 즉 다른 환경에서 실행중인 python.

이제 anaconda2 / bin (anaconda 3 사용자의 경우 anaconda3 / bin이어야 함) 디렉토리로 이동하여 "ipython"파일을 검색하십시오. 이 편집에서 원하는 현재 파이썬 버전을 가리 키도록 첫 번째 줄을 편집하십시오. 즉 "which python"의 출력입니다.

#!/home/sourabh/anaconda2/envs/py3/bin/python

파이썬 환경을 py2 (python 2.7 실행)에서 py3 (python 3.5 실행)으로 변경했습니다.

파일을 저장하십시오. 그리고 jupyter 노트북을 실행하면 이제 새 노트북을 만들 때 "Python 3"옵션이 표시됩니다.

건배!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.