5. macOS 에서 파이썬 사용하기¶
이 문서는 Mac 컴퓨터에서 Python을 시작할 때 알아야 할 macOS 전용 동작에 대한 개요를 제공합니다. macOS를 실행하는 Mac의 Python은 다른 Unix 계열 플랫폼의 Python과 매우 유사하지만, 설치 및 일부 기능에서 차이가 있습니다.
macOS용 Python을 구하고 설치하는 방법은 여러 가지가 있습니다. 가장 최근 버전의 사전 빌드된(pre-built) Python 버전은 여러 배포처에서 제공됩니다. 이 문서의 많은 부분은 python.org 사이트 에서 다운로드할 수 있는 CPython 릴리스 팀 제공 Python을 사용하는 방법을 설명합니다. 다른 옵션에 대해서는 대체 배포판 를 참조하십시오.
5.1. python.org에서 제공하는 macOS용 파이썬 사용하기¶
5.1.1. 설치 단계¶
현재 Python 버전 중 (security 상태를 제외한) 최신 버전마다 릴리스 팀은 Python for macOS 설치 패키지를 제공합니다. 사용 가능한 설치 프로그램 목록은 여기 <https://www.python.org/downloads/macos/>`에서 확인할 수 있습니다. 가능하면 가장 최근에 지원되는 Python 버전을 사용하는 것을 권장합니다. 현재의 설치 프로그램은 다양한 macOS 버전(일반적으로 최소 **macOS 10.15 Catalina** 이상)을 지원하는 모든 Mac(Apple Silicon 및 Intel)에서 네이티브로 실행되는 `universal2 바이너리 <https://en.wikipedia.org/wiki/Universal_binary> 빌드입니다.
다운로드한 파일은 표준 macOS 설치 패키지 파일(.pkg)입니다. 각 파일에 대한 무결성 정보(체크섬, 크기, sigstore 서명 등)는 릴리스 다운로드 페이지에 포함되어 있습니다. 설치 패키지와 그 내용은 macOS Gatekeeper 요구 사항 <https://support.apple.com/en-us/102445>`_을 충족하기 위해 ``Python Software Foundation` Apple Developer ID 인증서로 서명 및 공증되었습니다.
기본 설치를 하려면 다운로드한 설치 패키지 파일을 더블로 클릭하십시오. 그러면 표준 macOS Installer 앱이 실행되고 여러 단계 중 첫 번째 설치 창이 표시됩니다.
Continue 버튼을 클릭하면 이 설치 프로그램의 Read Me 가 나타납니다. 다른 중요한 정보 외에도 Read Me 는 어떤 파이썬 버전이 설치될 것인지, 그리고 어떤 macOS 버전에서 지원되는지 설명합니다. 전체 파일을 읽으려면 스크롤을 내려야 할 수도 있습니다. 기본적으로 이 Read Me 는 |applications_python_version_literal| 에도 설치되며 언제든지 읽을 수 있습니다.
계속 을 클릭하면 Python 및 기타 포함된 소프트웨어의 라이선스가 표시됩니다. 다음 단계로 진행하기 전에 라이선스 약관에 동의 해야 합니다. 이 라이선스 파일도 설치되어 나중에 읽어볼 수 있습니다.
라이선스 약관에 동의한 후 다음 단계로 설치 유형(Installation Type) 이 표시됩니다. 대부분의 경우 표준 설치 옵션 세트가 적합합니다.
사용자 정의 버튼을 누르면 설치 프로그램의 특정 패키지 구성 요소를 생략하거나 선택할 수 있습니다. 각 패키지 이름을 클릭하여 설치되는 내용에 대한 설명을 확인하십시오. 선택적 기능인 free-threaded 지원을 설치하려면 자유 스레드 바이너리 설치 를 참조하십시오.
어느 경우에든 Install 을 클릭하면 새 소프트웨어를 설치하기 위한 권한을 요청하며 설치 프로세스가 시작됩니다. 설치된 Python은 Mac의 모든 사용자가 사용할 수 있으므로 Administrator 권한이 있는 macOS 사용자 이름이 필요합니다.
설치가 완료되면 Summary 창이 나타납니다.
/Applications/Python 3.16/ 창에 있는 Install Certificates.command 아이콘이나 파일을 더블 클릭하여 설치를 완료하십시오.
이 작업을 수행하면 임시 Terminal 셸 창이 열리며, 새 Python을 사용하여 필요한 SSL 루트 인증서를 다운로드하고 설치합니다.
터미널 창에 Successfully installed certifi 및 update complete 가 표시되면 설치가 완료된 것입니다. 이 터미널 창과 설치 프로그램 창을 닫으십시오.
기본 설치 항목은 다음과 같습니다.
사용자의
Applications폴더 내에 있는Python 3.16폴더입니다. 이 안에는 공식 Python 배포판의 표준 구성 요소인 개발 환경인 IDLE 과 macOS Finder 에서 Python 스크립트를 더블 클릭할 때 처리하는 기능을 담당하는 Python Launcher 가 포함되어 있습니다.파이썬 실행 파일과 라이브러리를 포함하는 프레임워크
/Library/Frameworks/Python.framework. 설치기는 이 위치를 셸 경로에 추가합니다. 파이썬을 제거하려면, 이 세 가지를 지우면 됩니다. 파이썬 실행 파일에 대한 심볼릭 링크는/usr/local/bin/에 있습니다.
참고
최신 버전의 macOS에는 /usr/bin/python3 에 포함된 python3 명령이 있으며, 이는 Apple 개발 도구인 Xcode 또는 Command Line Tools for Xcode 에서 제공하고 사용하는, 보통 더 오래되고 불완전한 버전의 Python을 가리킵니다. 이 설치본은 Apple이 제어하며 Apple 제공 소프트웨어나 제3자 소프트웨어에서 사용되므로 절대 수정하거나 삭제하려고 시도해서는 안 됩니다. 만약 python.org 에서 최신 Python 버전을 설치하기로 선택하면, 컴퓨터에 서로 다르지만 모두 작동하는 두 개의 Python이 공존하게 됩니다. 기본 설치 옵션을 사용하면 시스템의 python3 대신 설치한 버전의 python3 가 사용됩니다.
5.1.2. 파이썬 스크립트를 실행하는 방법¶
Python 인터프리터를 실행하는 방법은 두 가지가 있습니다. 터미널 창에서 Unix 셸을 사용하는 데 익숙하다면, python3.16 또는 python3 를 호출하고 선택적으로 하나 이상의 명령줄 옵션을 추가할 수 있습니다(명령 줄과 환경 참조). 또한 Python 튜토리얼에는 using Python interactively from a shell 에 관한 유용한 섹션이 포함되어 있습니다.
통합 개발 환경(IDE)을 통해 인터프리터를 실행할 수도 있습니다. IDLE — 파이썬 편집기와 셸 은 Python 표준 배포판에 포함된 기본적인 편집기 및 인터프리터 환경입니다. IDLE 에는 Python 문서를 확인할 수 있는 Help 메뉴가 포함되어 있습니다. Python이 처음이라면 해당 문서의 튜토리얼 소개를 읽어보시기 바랍니다.
그 외에도 다양한 편집기와 IDE가 있으며, 자세한 내용은 편집기와 IDE 를 참조하십시오.
터미널 창에서 Python 스크립트 파일을 실행하려면 스크립트 파일 이름을 사용하여 인터프리터를 호출하면 됩니다.
python3.16myscript.py
Finder에서 스크립트를 실행하려면, 두 가지 방법이 있습니다:
스크립트를 Python Launcher로 드래그하십시오.
Finder 정보 창을 통해 여러분의 스크립트(또는 모든
.py스크립트)를 여는 기본 응용 프로그램으로 Python Launcher를 선택하고 스크립트를 더블 클릭하십시오. Python Launcher에는 스크립트를 시작하는 방법을 제어하는 다양한 설정이 있습니다. Option-드래그하면 하나의 호출에 대해 이를 변경할 수 있으며,Preferences메뉴를 사용하여 전역적으로 변경할 수 있습니다.
macOS Finder에서 스크립트를 직접 실행하면 터미널 창에서 실행할 때와 다른 결과가 나올 수 있음에 주의하십시오. 이는 셸 프로파일의 환경 변수 설정이 포함된 일반적인 셸 환경에서 스크립트가 실행되지 않기 때문입니다. 또한, 다른 모든 스크립트나 프로그램과 마찬가지로 실행하려는 내용이 무엇인지 반드시 확인하십시오.
5.2. 대체 배포판¶
macOS용 표준 python.org 설치 프로그램 외에도 추가 기능을 포함할 수 있는 제3자 배포판이 있습니다. 몇 가지 인기 있는 배포판과 주요 기능은 다음과 같습니다.
- ActivePython
다중 플랫폼 호환성 및 문서가 포함된 설치 프로그램
- Anaconda
인기 있는 과학용 모듈(numpy, scipy, pandas 등)과
conda패키지 관리자.- Homebrew
여러 버전의 Python 및 다양한 서드파티 파이썬 기반 패키지(numpy, scipy, pandas 포함)를 포함하는 macOS용 패키지 관리자.
- MacPorts
여러 버전의 Python 및 많은 서드파티 파이썬 기반 패키지를 포함하는 또 다른 macOS용 패키지 관리자입니다. 사전 빌드된 Python 버전과 구버전 macOS용 다양한 패키지가 포함될 수 있습니다.
배포판에 최신 버전의 Python이나 다른 라이브러리가 포함되지 않을 수 있으며, 핵심 Python 팀에서 유지 관리하거나 지원하지 않을 수 있음에 유의하십시오.
5.3. 추가 파이썬 패키지 설치하기¶
더 자세한 정보는 Python Packaging User Guide 를 참조하십시오.
5.4. GUI 프로그래밍¶
Mac에서 파이썬으로 GUI 응용 프로그램을 작성하기 위한 몇 가지 옵션이 있습니다.
표준 파이썬 GUI 툴킷은 크로스 플랫폼 Tk 툴킷(https://www.tcl.tk)을 기반으로 하는 tkinter입니다. 설치 프로그램에는 macOS용 네이티브 버전의 Tk가 포함되어 있습니다.
PyObjC는 애플의 Objective-C/Cocoa 프레임워크에 대한 파이썬 바인딩입니다. PyObjC에 대한 정보는 pyobjc 에서 얻을 수 있습니다.
다음을 포함하여 여러 대안의 macOS GUI 툴킷을 사용할 수 있습니다.
5.5. 고급 주제¶
5.5.1. 자유 스레드 바이너리 설치¶
Added in version 3.13.
python.org 의 Python for macOS 설치 패키지에서는 옵션으로 free-threading 기능(즉, global interpreter lock 을 비활성화하고 실행)인 PEP 703 을 지원하는 추가적인 Python 3.16 빌드를 설치할 수 있습니다. 최신 정보는 python.org 의 릴리스 페이지에서 확인하십시오.
free-threaded 모드는 현재 작동 중이며 지속적으로 개선되고 있지만, 일반 빌드와 비교하여 단일 스레드 작업에서는 약간의 추가 오버헤드가 발생할 수 있습니다. 또한 제3자 패키지, 특히 extension module 이 포함된 패키지는 free-threaded 빌드에서 사용 준비가 되지 않았을 수 있으며 이 경우 GIL 이 다시 활성화됩니다. 따라서 free-threading 지원 기능은 기본적으로 설치되지 않습니다. 이는 별도의 설치 옵션으로 제공되며, 위에서 설명한 대로 설치 프로그램의 Installation Type 단계에서 Customize 버튼을 클릭하여 선택할 수 있습니다.
Free-threaded Python 패키지 이름 옆의 상자가 선택되면, /Library/Frameworks 에 일반적인 Python.framework 와 함께 별도의 PythonT.framework 가 설치됩니다. 이 구성을 통해 설치 또는 테스트 중에 최소한의 위험으로 전통적인(GIL 전용) Python 3.16 빌드와 free-threaded Python 3.16 빌드가 시스템에 공존할 수 있습니다. 이러한 설치 레이아웃은 향후 릴리스에서 변경될 수 있습니다.
알려진 주의 사항 및 제한 사항:
The UNIX command-line tools package, which is selected by default, will install links in
/usr/local/binforpython3.16t, the free-threaded interpreter, andpython3.16t-config, a configuration utility which may be useful for package builders. Since/usr/local/binis typically included in your shellPATH, in most cases no changes to yourPATHenvironment variables should be needed to usepython3.16t.For this release, the Shell profile updater package and the
Update Shell Profile.commandin/Applications/Python 3.16/do not support the free-threaded package.The free-threaded build and the traditional build have separate search paths and separate
site-packagesdirectories so, by default, if you need a package available in both builds, it may need to be installed in both. The free-threaded package will install a separate instance of pip for use withpython3.16t.venv 없이 pip 을 사용하여 패키지를 설치하려면:
python3.16t -m pip install <package_name>
여러 개의 Python 환경을 사용하는 경우, 일반적으로 가장 안전하고 쉬운 방법은 가상 환경을 생성하여 사용하는 것 입니다. 이를 통해 명령 이름 충돌이나 현재 어떤 Python이 사용 중인지 혼동되는 상황을 방지할 수 있습니다.
python3.16t -m venv <venv_name>
그런 다음 activate 를 수행합니다.
free-threaded 버전의 IDLE를 실행하려면:
python3.16t -m idlelib
두 빌드의 인터프리터 모두 동일한 PYTHON 환경 변수 에 반응하므로, 예를 들어 셸 프로파일에
PYTHONPATH가 설정되어 있는 경우 예상치 못한 결과가 나타날 수 있습니다. 필요한 경우 이러한 환경 변수를 무시하는-E와 같은 명령줄 옵션 을 사용할 수 있습니다.free-threaded 빌드는 전통적인 프레임워크에 설치된
OpenSSL및Tk와 같은 제3자 공유 라이브러리를 연결합니다. 이는 두 빌드 모두 Install Certificates.command 스크립트에 의해 설치된 하나의 신뢰 인증서 세트를 공유함을 의미하며, 따라서 한 번만 실행하면 됩니다.If you cannot depend on the link in
/usr/local/binpointing to thepython.orgfree-threadedpython3.16t(for example, if you want to install your own version there or some other distribution does), you can explicitly set your shellPATHenvironment variable to include thePythonTframeworkbindirectory:export PATH="/Library/Frameworks/PythonT.framework/Versions/3.16/bin":"$PATH"
The traditional framework installation by default does something similar, except for
Python.framework. Be aware that having both frameworkbindirectories inPATHcan lead to confusion if there are duplicate names likepython3.16in both; which one is actually used depends on the order they appear inPATH. Thewhich python3.xorwhich python3.xtcommands can show which path is being used. Using virtual environments can help avoid such ambiguities. Another option might be to create a shell alias to the desired interpreter, like:alias py3.16="/Library/Frameworks/Python.framework/Versions/3.16/bin/python3.16" alias py3.16t="/Library/Frameworks/PythonT.framework/Versions/3.16/bin/python3.16t"
5.5.2. 명령줄을 사용하여 설치하기¶
If you want to use automation to install the python.org installer package
(rather than by using the familiar macOS Installer GUI app),
the macOS command line installer utility lets you select non-default
options, too. If you are not familiar with installer, it can be
somewhat cryptic (see man installer for more information).
As an example, the following shell snippet shows one way to do it,
using the 3.16.0b2 release and selecting the free-threaded interpreter
option:
RELEASE="python-3.160b2-macos11.pkg"
# download installer pkg
curl -O https://www.python.org/ftp/python/3.16.0/${RELEASE}
# create installer choicechanges to customize the install:
# enable the PythonTFramework-3.16 package
# while accepting the other defaults (install all other packages)
cat > ./choicechanges.plist <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>attributeSetting</key>
<integer>1</integer>
<key>choiceAttribute</key>
<string>selected</string>
<key>choiceIdentifier</key>
<string>org.python.Python.PythonTFramework-3.16</string>
</dict>
</array>
</plist>
EOF
sudo installer -pkg ./${RELEASE} -applyChoiceChangesXML ./choicechanges.plist -target /
그런 다음 다음과 같은 명령으로 두 종류의 설치 빌드를 모두 사용할 수 있는지 테스트할 수 있습니다.
$ # test that the free-threaded interpreter was installed if the Unix Command Tools package was enabled $ /usr/local/bin/python3.16t -VV Python 3.16.0b2 free-threading build (v3.16.0b2:3a83b172af, Jun 5 2024, 12:57:31) [Clang 15.0.0 (clang-1500.3.9.4)] $ # and the traditional interpreter $ /usr/local/bin/python3.16 -VV Python 3.16.0b2 (v3.16.0b2:3a83b172af, Jun 5 2024, 12:50:24) [Clang 15.0.0 (clang-1500.3.9.4)] $ # test that they are also available without the prefix if /usr/local/bin is on $PATH $ python3.16t -VV Python 3.16.0b2 free-threading build (v3.16.0b2:3a83b172af, Jun 5 2024, 12:57:31) [Clang 15.0.0 (clang-1500.3.9.4)] $ python3.16 -VV Python 3.16.0b2 (v3.16.0b2:3a83b172af, Jun 5 2024, 12:50:24) [Clang 15.0.0 (clang-1500.3.9.4)]
참고
현재의 python.org 설치 프로그램은 /Library/Frameworks/, /Applications, 및 /usr/local/bin`와 같은 고정된 위치에만 설치합니다. 다른 위치에 설치하기 위해 :command:`installer`의 `-domain`` 옵션을 사용할 수 없습니다.
5.5.3. 파이썬 응용 프로그램 배포하기¶
Python 코드를 독립적으로 배포 가능한 애플리케이션으로 변환하는 다양한 도구가 있습니다.
5.5.4. App Store 준수 사항¶
macOS App Store를 통해 배포되는 앱은 Apple의 앱 검토 프로세스를 통과해야 합니다. 이 과정에는 제출된 애플리케이션 번들의 문제가 되는 코드를 점검하는 일련의 자동화된 검증 규칙이 포함됩니다.
Python 표준 라이브러리에는 이러한 자동화 규칙을 위반하는 것으로 알려진 코드가 일부 포함되어 있습니다. 이러한 위반 사항이 오탐(false positive)으로 보일 수 있으나, Apple의 검토 규칙에 이의를 제기할 수는 없습니다. 따라서 앱이 App Store 심사를 통과하려면 Python 표준 라이브러리를 수정해야 합니다.
Python 소스 트리에는 App Store 검토 프로세스에서 문제를 일으키는 것으로 알려진 모든 코드를 제거하는 패치 파일 이 포함되어 있습니다. 이 패치는 CPython을 구성할 때 --with-app-store-compliance 옵션을 사용하면 자동으로 적용됩니다.
이 패치는 일반적으로 Mac에서 CPython을 사용하는 데 필요하지 않으며, macOS App Store 외부에서 앱을 배포할 때도 필요하지 않습니다. 이 패치는 오직 macOS App Store를 배포 채널로 사용할 때만 필요합니다.
5.6. 기타 자원¶
python.org Help page 에는 유용한 자료로 연결되는 링크가 많이 포함되어 있습니다. Pythonmac-SIG mailing list 는 Mac의 Python 사용자 및 개발자를 위한 또 다른 전용 지원 리소스입니다.