2013-07-03 2 views
1

저는 프로그래밍하기가 비교적 쉽습니다. 내 손가락 끝이 파랗게 될 때까지 검색했지만 문제의 해결책을 찾지 못하는 것 같습니다.OSX에서 홈베이스에 설치된 Python 2 및 Python 3에서 PATH 문제가 발생했습니다.

나는 OSX에서 파이썬 2와 파이썬 3의 자작 설치 버전을 가지고 있는데, IDLE의 두 버전 모두에서 모듈을 올바르게 임포트 할 수 있도록 내 .bash_profile에서 적절한 PATH/PYTHONPATH를 얻을 수 없다. 그러나 쉘 창에서 Python 2 또는 Python 3을 직접 실행할 때 모듈을 가져올 수는 있습니다. 터미널을 통해 IDLE을 시작하므로 경로를 제대로 초기화해야합니다.

여기 내 .bash_profile입니다 :

export PATH=/bin:/usr/local/bin:$PATH 
export PYTHONPATH=/Users/maverett/Documents/PyModules:/Users/maverett/Dropbox/matrix/:$PYTHONPATH 

여기 예를 들어 모듈로 NumPy와 사용, 네 가지 경우에 발생하는 상황. 터미널 작품 python2를 실행할 때 가져 오기

:

$ python2 
Python 2.7.5 (default, Jun 28 2013, 19:06:25) 
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import numpy as np 
>>> 

시작 IDLE을 파이썬 2 터미널에서, 나는 또한 NumPy와를 가져올 수 있습니다. 그러나 IDLE 대 sys.path을 터미널에 비교하면 sys.path과 다릅니다. 나는 차이를 생성하는 목록을 비교 발견

>>> InIdleNotInTerm 
['/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/bin'] 
>>> InTermNotInIdle 
[] 

을 그래서 파이썬 2

이야기를 실행하는 IDLE 경로에 하나 추가 디렉토리는

$ python3 
Python 3.3.2 (default, Jul 1 2013, 10:53:26) 
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import numpy as np 
>>> 
파이썬 3에 대한 전혀 다른 존재입니다 나는 다음 NumPy와를 가져 오려고 (터미널에서 idle3 입력하여) 파이썬 3 IDLE 시작할 경우

, 내가 얻을

>>> import numpy as np 
Traceback (most recent call last): 
    File "<pyshell#1>", line 1, in <module> 
    import numpy as np 
ImportError: No module named 'numpy' 
>>> 
무슨 일이 일어나고 있는지

>>> pp(InIdleNotInTerm) 
['/Library/Frameworks/Python.framework/Versions/3.3/bin', 
'/Library/Frameworks/Python.framework/Versions/3.3/lib/python33.zip', 
'/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3', 
'/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/plat-darwin', 
'/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/lib-dynload', 
'/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages'] 
>>> pp(InTermNotInIdle) 
['/usr/local/Cellar/python3/3.3.2/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/distribute-0.6.45-py3.3.egg', 
'/usr/local/Cellar/python3/3.3.2/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/pip-1.3.1-py3.3.egg', 
'/usr/local/lib/python3.3/site-packages/distribute-0.6.45-py3.3.egg', 
'/usr/local/lib/python3.3/site-packages/pip-1.3.1-py3.3.egg', 
'/usr/local/Cellar/python3/3.3.2/Frameworks/Python.framework/Versions/3.3/lib/python33.zip', 
'/usr/local/Cellar/python3/3.3.2/Frameworks/Python.framework/Versions/3.3/lib/python3.3', 
'/usr/local/Cellar/python3/3.3.2/Frameworks/Python.framework/Versions/3.3/lib/python3.3/plat-darwin', 
'/usr/local/Cellar/python3/3.3.2/Frameworks/Python.framework/Versions/3.3/lib/python3.3/lib-dynload', 
'/usr/local/Cellar/python3/3.3.2/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages', 
'/usr/local/Cellar/python3/3.3.2/Frameworks/Python.framework/Versions/3.3/lib/python3.3/site-packages/setuptools-0.6c11-py3.3.egg-info', 
'/usr/local/lib/python3.3/site-packages', 
'/usr/local/lib/python3.3/site-packages/setuptools-0.6c11-py3.3.egg-info'] 

어떤 생각 :

다시 말하지만, 나는 큰 차이가 터미널에서 sys.path 및 IDLE과이 시간을 비교? 내가 해봤 다른 몇 가지 :

에 .bash_profile을 변경
export PATH=/bin:/usr/local/bin:$PATH 
export PYTHONPATH=/Users/maverett/Documents/PyModules:/Users/maverett/Dropbox/matrix/:/usr/local/lib/python3.3/site-packages/:$PYTHONPATH 

터미널과 IDLE 파이썬 3에서 모듈을 가져올 수있는 결과지만하려고하기 때문에 파이썬 2 (에 대한 수입 중단 제대로 모든 것을 가져올 수있는에 python3.3/site-packages/ 결과에서 단자를 통해 파이썬 3 IDLE 시작)!

를 파이썬 3 버전을 가져옵니다,하지만 난

파이썬 3. 시작이 때마다 싶지 않아 어떤 생각이나 당신이 가지고있는 아이디어는 크게 감사 할 것입니다! 감사합니다 :)

+0

모듈을 pip로 설치 했습니까? 'easy_install'? 그냥 궁금해서. – Droogans

+0

Python 2 또는 3에 따라 pip 또는 pip3과 함께 설치됩니다. – limbsoup

답변

0

좋아, 여기에 내가 당신이하고 싶은 내용은 다음과 같습니다 easy_install를 사용

중지를, 당신은 여전히 ​​패키지 관리를 위해 그것을 사용하는 경우. 대신 pip을 사용하십시오.

$> easy_install pip 

다음으로 virtual environments을 얻으십시오.

$> pip install virtualenv 
$> mkdir ~/venvs 
$> virtualenv ~/venvs/numpy_project --python=python2.7 --no-site-packages 

잘 이름이 지정된 디렉토리를 virtualenv으로 전달했는지 확인하십시오. 표준 사용법은 프로젝트별로 가상 환경을 구성하는 것이므로이 가상 환경을 "numpy_project"라고 명명했습니다. 당신은 아마 더 좋은 이름을 생각해 내야합니다. 파이썬 2.7을 사용하라고 말했지만 원하는 경우 3.3을 사용할 수도 있습니다.

기본적으로 이것은 하나의 특정 목적을 위해 전용 파이썬 사본을 만들기 위해 잘 격리 된 버블을 생성합니다. 깨끗한 슬레이트를 확보하기 위해 no-site-packages을 사용하라고했습니다. 그것은 실행하여 수행 할 수 있습니다이 프로젝트에 일을 설정하기가 쉽게 만드는 :

$> source ~/venvs/numpy_project/bin/activate 

이이 보호 사본에 글로벌 "주"파이썬에서 파이썬 환경을 전환합니다. 그러면 다음을 실행할 수 있습니다 :

$> pip install numpy 

그리고 python 복사본에 대해서만 설치합니다.

다른 사람들이 간단하게 실행할 수 있도록, 당신의 README.md 물건이 갈 것 프로젝트의 루트에서

$> pip freeze > requirements.txt 

을 실행하십시오 :

$> pip install -r PROJECT_ROOT/requirements.txt 

을 그리고 사로 잡고 모든 가상 환경에 넣은 것 (예 : numpy). 가상 환경을 사용하는 경우 작업 환경과 정확히 일치하는지 확인할 수 있습니다. 파이썬의 다른 패키지와 버전과 겹치거나 혼동해서는 안됩니다.

더 나은 결과가 나오는지보십시오. 을 실행하지 마십시오. pip과 sudo!

이 방법이 효과가 있다면 numpy의 "글로벌"설치를 제거하고 가상 환경에서 사용하십시오.

+0

도움을 주셔서 감사합니다! 나는 완전히 신선한 것을 시작하기로 결정했고 내 IT 부서에서 나를 위해 OS X를 지우고 다시 이미지화하게했습니다. 나는 지금 10.8.4를 달리고있다. 나는 virtualenv에 대한 아이디어가 마음에 들지만 아직 몇 가지 문제가있다. homebrew를 설치하고'brew install python'과'brew install python3'을 통해 python 2와 3을 설치하는데 사용했다. 그런 다음'virtualenv'와'virtualenvwrapper '를 설치하기 위해'pip'를 사용했습니다. 나는 파이썬 2.7을위한 환경을 만들었고 거기에 필요한 모든 것을 올바르게 설정했다. – limbsoup

+0

그런 다음 Python 3 환경에서 Python 3.3을 설치하려고 시도했지만 Python 3 환경에서 작업 할 때'pip3'을 사용하여 일부 패키지를 설치 한 후 전역 사이트에 설치되는 것으로 나타났습니다. 패키지. 나는 pip3을 모두 제거하고 python 3 virtualenv를 삭제했습니다. 파이썬의 버전을 지정하기 위해 -p를 사용하여 하나를 재현했지만, 이제는 그 virtualenv에 pip3을 설치하지 못했습니다. 이견있는 사람? – limbsoup

+0

아하! 필자는'py3' 가상 환경에서'pip'와'pip3'을 사용하고 있으며,'pip3'은 전역 환경에서 사용하고 있는지 확인했습니다. 나는 조금 봤 거든 내가'pip-3.3'으로 설치해야한다는 것을 발견했다. 이것은 가상 환경에있는 것처럼 보인다. 이것을 시도하고 볼 것입니다. 손가락이 엇갈 렸다! – limbsoup

관련 문제