Mac에서 Python 모듈을 설치하는 가장 호환 가능한 방법은 무엇입니까?


125

나는 파이썬을 배우고 사랑하기 시작했습니다. 나는 주로 Linux뿐만 아니라 Mac에서도 작업합니다. apt-get을 사용하여 파이썬 모듈을 설치할 때 Linux (대부분 우분투 9.04)에서 제대로 작동한다는 것을 알았습니다. 문제없이 수입 할 수 있습니다.

Mac에서는 Macports를 사용하여 모든 Unixy를 설치하는 데 익숙했습니다. 그러나, 내가 설치 한 대부분의 파이썬 모듈은 파이썬에서 보이지 않습니다. PATH 설정을 사용하고 python_select 사용하는 데 시간을 보냈습니다. 아무것도 실제로 작동하지 않았 으며이 시점에서 나는 실제로 이해하지 못하고 대신 그냥 파고 들었습니다.

Macports가 파이썬 모듈 관리에 보편적으로 사랑받지 않는다는 인상을 받았습니다. 보다 "허용 된"(올바른 단어 인 경우) 접근 방식을 사용하여 새로 시작하고 싶습니다.

그래서 Mac Python 개발자가 모듈을 관리하는 데 사용하는 방법은 무엇입니까?

보너스 질문 :

Apple의 Python 또는 다른 버전을 사용하십니까? 소스에서 모든 것을 컴파일하거나 잘 작동하는 패키지 관리자가 있습니까 (핑크?).


: 아르스 테크니카에서 맥 OS X에 대한 한참 PyQt는 응용 프로그램을 포장에 좋은 기사가 있었다 arstechnica.com/open-source/guides/2009/03/...
토드 도박꾼을

7
MacPorts는 Mac의 Python에 완벽합니다. 참고 : MacPorts Python 설치에 설치하려면 MacPorts를 통해 Python 패키지를 설치해야합니다. MacPorts를 사용하지 않고 패키지를 설치할 수도 있습니다. 그러나 패키지를 설치하기 전에 python_select를 통해 해당 버전의 python을 기본값으로 만들어야합니다. 패키지를 설치 한 다음 python_select를 사용하면 설치시 기본 버전의 Python 버전으로 설치되므로 차이가 없습니다.
Michael Aaron Safyan

답변:


144

시스템 패키지 관리자를 사용하지 않는 경우 파이썬 패키지를 관리하는 가장 일반적인 방법은 setuptools 및 easy_install을 사용하는 것입니다. 시스템에 이미 설치되어있을 것입니다. 다음과 같이 사용하십시오.

easy_install django

easy_install은 Python 개발자를위한 놀라운 리소스 인 Python Package Index 를 사용합니다 . 사용 가능한 패키지를 확인하십시오.

더 나은 옵션은 pip입니다 . 이는 easy_install과 관련된 많은 문제해결 하려고 시도함에 따라 견인력을 얻고 있습니다. Pip은 easy_install과 동일한 패키지 저장소를 사용하므로 더 잘 작동합니다. easy_install을 사용해야하는 유일한 시간은이 명령입니다.

easy_install pip

그 후 다음을 사용하십시오.

pip install django

언젠가 virtualenv 에 대해 조금 배우고 싶을 것입니다 . 패키지 요구 사항이 충돌하는 프로젝트에서 많은 파이썬 개발을 수행하는 경우 virtualenv는 신의 선물입니다. 완전히 다른 버전의 다양한 패키지를 가질 수 있으며 필요에 따라 쉽게 전환 할 수 있습니다.

사용할 파이썬에 관해서는, 애플의 파이썬을 고수하면 두통을 최소화 할 수 있지만 최신 버전이 필요한 경우 (Leopard는 2.5.1입니다) macports python 2.6을 사용합니다.


5
최근에 컴퓨터를 다시 빌드하고 Homebrew와 PIP 만 사용하도록 전환했습니다. 갑자기 모든 빌드 문제가 사라졌습니다.
GloryFish

42

귀하의 질문은 이미 3 살이며 다른 답변에서 다루지 않은 세부 사항이 있습니다.

내가 아는 대부분의 사람들은 HomeBrew 또는 MacPorts를 사용 합니다. 기본 Mac OS X 환경과 개발 설정이 깔끔하게 정리되어 있기 때문에 MacPorts를 선호합니다. / opt 폴더를 옮기고 일반 사용자 Python 환경으로 패키지를 테스트하십시오.

MacPorts는 Mac 내에서만 휴대 할 수 있지만 easy_install 또는 pip를 사용하면 모든 플랫폼 (Win / Mac / Linux / Bsd ...)에서 환경을 설정하는 방법을 배울 수 있습니다. 또한 항상 최신 상태이며 더 많은 패키지로 제공됩니다.

개인적으로 MacPorts가 파이썬 모듈을 처리하여 모든 것을 최신 상태로 유지하도록했습니다. 다른 고급 패키지 관리자 (예 : apt-get)와 마찬가지로 이진 종속성이 많은 모듈을 많이 들어 올리는 것이 훨씬 좋습니다. easy_install 또는 pip를 사용하여 Qt 바인딩 (PySide)을 빌드 할 방법이 없습니다. Qt는 거대하고 컴파일하는 데 많은 시간이 걸립니다. 비 Python 프로그램에서 사용하는 라이브러리가 필요한 Python 패키지를 원하면 easy_install 또는 pip를 피하십시오

어느 시점에서 MacPorts에 일부 패키지가 누락되어 있음을 알 수 있습니다. 나는 MacPorts가 당신에게 CheeseShop 전체를 줄 것이라고 믿지 않습니다 . 예를 들어, 최근에는 Elixir 모듈이 필요 했지만 MacPorts는 py27 버전이없는 py25-elixir 및 py26-elixir 만 제공합니다. 이와 같은 경우에는

pip-2.7 설치 --user elixir

(항상 pip- (version)을 입력하십시오)

그러면 홈 디렉토리에 추가 Python 라이브러리가 작성됩니다. 예, 파이썬은 하나 이상의 라이브러리 위치에서 작동합니다. 하나는 MacPorts에 의해 제어되고 하나는 MacPorts에없는 모든 것에 대한 사용자 로컬 위치입니다.

이제 easy_install보다 pip를 선호합니다. setuptools 및 easy_install을 피해야하는 좋은 이유가 있습니다. 여기에 좋은 설명이 있으며 나는 그것들을 멀리하려고 노력합니다. pip의 매우 유용한 기능 중 하나는 MacPorts, easy_install 및 pip 자체와 함께 설치 한 모든 모듈 (버전과 함께) 목록을 제공하는 것입니다.

핍 -2.7 동결

easy_install을 사용하기 시작한 경우 걱정하지 마십시오. pip는 easy_install을 통해 이미 수행 된 모든 작업을 인식하고 함께 설치된 패키지를 업그레이드 할 수도 있습니다.

개발자 인 경우 다양한 설정 및 모듈 버전 조합을 제어하기 위해 virtualenv 를 주시하십시오 . 다른 답변은 이미 언급했지만 지금까지 언급하지 않은 것은 패키지가 다른 Python 버전으로 올바르게 설치 되는지 테스트하는 도구 인 Tox 모듈입니다.

일반적으로 버전 충돌이 없지만 깨끗한 환경을 설정하고 패키지 종속성을 명확하게 볼 수 있도록 virtualenv를 사용하고 싶습니다. 그렇게하면 설정에서 종속성을 잊지 않습니다.

MacPorts를 사용한다면 추가 python_select 패키지가있는 이전 데비안 스타일과 같은 동일한 패키지의 여러 버전이 더 이상 선택되지 않습니다 (여전히 호환성을 위해 존재합니다). 이제 사용할 Python 버전을 선택하는 select 명령이 있습니다 (Apple 설치 버전을 선택할 수도 있음).

$  port select python
Available versions for python:
    none
    python25-apple
    python26-apple
    python27 (active)
    python27-apple
    python32

$ port select python python32

그 위에 독을 추가하면 프로그램은 실제로 휴대 가능해야합니다.


30

Python OS X 개발 환경을 참조하십시오 . 가장 좋은 방법은 MacPorts 를 사용하는 것 입니다. MacPorts를 다운로드하여 설치 한 다음 터미널에 다음 명령을 입력하여 MacPorts를 통해 Python을 설치하십시오.

sudo 포트 설치 python26 python_select
sudo 포트 선택 --python python26

또는

sudo 포트 설치 python30
sudo 포트 선택 --python python30

첫 번째 명령 세트를 사용하여 Python 2.6을 설치하고 두 번째 명령을 사용하여 Python 3.0을 설치하십시오. 그런 다음 사용하십시오.

sudo 포트 설치 py26-packagename

또는

sudo 포트 설치 py30-packagename

위 명령에서 packagename 을 패키지 이름으로 바꾸십시오 ( 예 :

sudo 포트 설치 py26-setuptools

이 명령은 주어진 Python 버전에 대한 패키지 및 해당 종속성을 자동으로 설치합니다.

사용 가능한 Python 패키지의 전체 목록을 보려면 다음을 입력하십시오.

포트 목록 | grep py26-

또는

포트 목록 | grep py30-

사용하는 명령은 설치하기로 선택한 Python 버전에 따라 다릅니다.


1
기록을 위해 최신 버전의 MacPorts가로 sudo python_select python30대체되었습니다 sudo port select --set python python30.
Benjamin Hodgson

7

MacPorts를 사용하여 Python 및 MacPorts에서 추적 한 타사 모듈을에 /opt/local설치하고 수동으로 설치된 모듈 (MacPorts 저장소에없는 모듈)을 /usr/local에 설치하면 문제가 발생하지 않습니다. 특정 MacPorts 스크립트 및 환경 변수 사용에 대해 혼란 스러울 수 있습니다.

MacPorts python_select는 "현재"버전의 Python을 선택하는 데 사용되지만 모듈과는 관련이 없습니다. 예를 들어 MacPorts를 사용하여 Python 2.5와 Python 2.6을 모두 설치하고 설치를 전환 할 수 있습니다.

$PATH환경 변수는 않습니다 하지 파이썬 모듈이로드 무엇에 영향을 미칩니다. $PYTHONPATH당신이 찾고있는 것입니다. $PYTHONPATH로드하려는 Python 모듈이 포함 된 디렉토리를 가리켜 야합니다. 제 경우 $PYTHONPATH에는 변수에가 포함되어 있습니다 /usr/local/lib/python26/site-packages. MacPorts의 Python을 사용하는 경우 다른 적절한 디렉토리를 설정하므로 경로를 추가하기 만하면됩니다 $PYTHONPATH. 그러나 $PATH파이썬이 설치 한 모듈을 검색 할 때는 전혀 사용되지 않습니다.

$PATH 실행 파일을 찾는 데 사용되므로 MacPorts의 Python을 설치하는 경우에 있어야 /opt/local/bin합니다 $PATH.


6

MacPorts Python 설치를 사용하는 데 아무런 문제가 없습니다. MacPorts에서 python 모듈을 설치하고 있는데 보이지 않는 경우, 설치 한 MacPorts python을 호출하지 않았을 가능성이 있습니다. 터미널 셸에서 절대 경로를 사용하여 설치 될 수있는 다양한 Python을 호출 할 수 있습니다. 예를 들면 다음과 같습니다.

$ /usr/bin/python2.5         # Apple-supplied 2.5 (Leopard)
$ /opt/local/bin/python2.5   # MacPorts 2.5
$ /opt/local/bin/python2.6   # MacPorts 2.6
$ /usr/local/bin/python2.6   # python.org (MacPython) 2.6
$ /usr/local/bin/python3.1   # python.org (MacPython) 3.1

기본적으로 올바른 파이썬을 얻으려면 올바른 실행 파일을 먼저 찾을 수 있도록 쉘 $ PATH를 올바르게 설정해야합니다. 또 다른 해결책은 다양한 파이썬에 쉘 별명을 정의하는 것입니다.

다른 사람들이 제안했듯이 python.org (MacPython) 설치도 좋습니다. easy_install 각 Python 인스턴스에는 자체 easy_install명령 이있을 수 있으므로 도움이 될 수 있지만 올바른 호출인지 확인하십시오 easy_install.


2
그가 MacPorts를 사용하는 경우, 해당 버전의 Python을 기본값으로 설정하는 올바른 방법은 PATH를 망가 뜨리지 않고 "python_select"를 설치하고 필요한 심볼릭 링크를 자동으로 전환하여 해당 버전의 Python을 기본값으로 설정하는 것입니다.
Michael Aaron Safyan

3
python_select는 / opt / local / bin의 Python 심볼릭 링크 만 관리하며 $ PATH의 / usr / local / bin 또는 / usr / bin 이전에 / opt / local / bin이 오는 것을 보증하지 않습니다 (MacPorts의 초기 설치는 시도하지만 그렇게하십시오). 요점은 "python"또는 "python2.5"를 사용하는 여러 버전을 사용할 때 일반적으로 약간의 골칫거리입니다. PATH 함정 및 / 또는 절대 경로를 사용하십시오.
Ned Deily

6

MacPorts에서 Python을 사용하는 경우 /opt/local/bin/easy_install-2.6(py26 의 경우)에 자체 easy_install이 있습니다 . python_select를 사용하여 기본 python 명령을 변경하더라도 easy_install을 직접 호출하는 것과 동일하지 않습니다.


1
핍도 마찬가지입니다. MacPorts 설정을 통해 pip-2.6 (/ opt / local / bin /에 있음)을 실행하여 MacPorts python과 잘 작동하는 python 모듈을 설치합니다. sudo port install py2.6-pip핍을 얻을 수 있습니다 .
zlovelady

4

easy_install 을 살펴 보셨습니까 ? macports 또는 이와 유사한 것을 동기화하지는 않지만 최신 패키지와 필요한 모든 종속성을 자동으로 다운로드합니다.

easy_install nose

코 유닛 테스트 패키지 또는

easy_install trac

를 위해 trac 버그 추적기.

EasyInstall 페이지에도 약간의 정보가 있습니다.


1
easy_install은 괜찮습니다. 여러 버전의 Python을 설치 한 것처럼 각기 다른 Python 설치 / 버전과 관련된 여러 버전의 easy_install을 쉽게 설치할 수 있습니다. 당신은 당신이 호출 한 것을 이해해야합니다 ((1) 도움이 될 수 있습니다).
Ned Deily


2

MacPorts로 모듈을 설치할 때 Apple의 Python 버전으로 들어 가지 않습니다. 대신 해당 모듈은 선택된 MacPorts 버전의 Python에 설치됩니다.

python_select 라는 mac 포트를 사용하여 기본적으로 사용되는 Python 버전을 변경할 수 있습니다 . 여기에 지침이 있습니다 .

또한 easy_install이 있습니다 있습니다. 파이썬을 사용하여 파이썬 모듈을 설치합니다.


python_select더 이상 사용되지 않습니다. 최신 답변을 참조하십시오.
askewchan




-1

핑크 패키지 중 하나를 직접 설치하십시오 (2013 년 11 월 현재 장고 1.6)

fink install django-py27
fink install django-py33

또는 자신을 virtualenv로 만드십시오.

fink install virtualenv-py27
virtualenv django-env
source django-env/bin/activate
pip install django
deactivate # when you are done

또는 virtualenv에서 fink django와 다른 pip 설치 패키지를 사용하십시오.

fink install django-py27
fink install virtualenv-py27
virtualenv django-env --system-site-packages
source django-env/bin/activate
# django already installed
pip install django-analytical # or anything else you might want
deactivate # back to your normally scheduled programming
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.