Python 패키지 설치 문제: PyAudio, PortAudio

마지막 업데이트: 2022년 2월 22일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기
Gigi Sayfan Jul 15, 2016

Pip은 정확히 무엇입니까?

pip 명령을 사용하여 requirements.txt 파일에서 모든 Python 패키지를 어떻게 업그레이드합니까?

파이썬 패키지에는 버전 번호 ( Django==1.5.1 ) 가 접미사로 붙어 있으므로 업그레이드되지 않는 것 같습니다. requirements.txt 파일을 수동으로 편집하는 것보다 더 좋은 방법이 있습니까?

편집하다

Andy가 그의 답변에서 언급했듯이 패키지는 특정 버전에 고정되어 있으므로 pip 명령을 통해 패키지를 업그레이드 할 수 없습니다.

그러나 pip-tools 다음 명령 을 사용하여 이를 달성 할 수 있습니다 .

그러면 requirements.txt에서 모든 패키지가 자동으로 업그레이드됩니다 ( pip-tools pip install 명령을 Python 패키지 설치 문제: PyAudio, PortAudio 사용하여 설치해야 함).

아니요. 요구 사항 파일이 특정 버전 에 고정 되었습니다 . 요구 사항이 해당 버전으로 설정된 경우 해당 버전 이상으로 업그레이드하지 않아야합니다. 업그레이드 해야하는 경우 요구 사항 파일에서 고정되지 않은 버전으로 전환해야합니다.

이것은 lxml을 2.2.0보다 새로운 버전으로 업그레이드합니다.

그러면 lxml이 2.2.0에서 2.3.0 사이의 최신 버전으로 업그레이드됩니다.

당신은 시도 할 수 있습니다:

설치된 패키지를 무시하고 새 패키지를 설치할 수도 있습니다.

나는 이미 여기 에서이 질문에 대답했다 . 내 해결책은 다음과 같습니다.

패키지별로 패키지를 업그레이드하고 requirements.txt 파일을 업데이트하는 쉬운 방법이 없었기 때문에 선택한 패키지 (또는 모든 패키지) 파일 버전도 업데이트하는pip-upgrader 를 작성했습니다 . requirements.txt

설치

용법

virtualenv를 활성화합니다 (현재 virtualenv에 업그레이드 된 패키지의 새 버전도 설치하므로 중요).

cd 프로젝트 디렉토리에 넣고 다음을 실행하십시오.

고급 사용법

요구 사항이 비표준 위치에있는 경우 인수로 보냅니다.

업그레이드 할 Python 패키지 설치 문제: PyAudio, PortAudio 패키지를 이미 알고있는 경우 인수로 보내면됩니다.

출시 전 / 출시 후 버전으로 업그레이드해야하는 경우 --prerelease 명령 에 인수를 추가 합니다.

전체 공개 :이 패키지를 작성했습니다.

bash를 사용하여 그렇게 할 수 없었기 때문에 버전이없는 새 요구 사항 파일을 만들고 사용하는 python 모듈을 작성했습니다.

그런 다음 새 파일에서 libs를 설치하십시오. pip install -U -r requirements-prod-no-version.pip

Python 패키지 설치 문제 : PyAudio, PortAudio

그래서 그 오류를 찾은 후 portaudio를 설치해야한다는 것을 읽었습니다. 그래서 나는 python -m pip install portaudio 이 오류가 발생했습니다.

지금 여기서 어디로 가야할지 모르겠습니다.

7 answers

portaudio 은 Python 패키지가 아니며, Python과 완전히 독립적 인 C 라이브러리이므로을 통해 설치할 수 없습니다 pip .

공식적으로 다운로드하고 플랫폼에 설치하는 방법에 대한 자세한 내용은 PortAudio 웹 사이트를 참조하십시오.

AFAIK, Windows에서 다운로드하는 공식적인 방법은 소스를 다운로드 한 다음 튜토리얼 의 지침에 따라 직접 컴파일하는 것입니다. 필요한지 확실하지 않지만 Python C 확장에 사용하는 것과 동일한 컴파일러로 빌드하고 싶을 것입니다.

또는 Windows에서 Chocolatey 와 같은 타사 패키지 관리자를 사용하는 경우 PortAudio를 설치할 수있는 좋은 기회가 있습니다.

또는 Python에 Anaconda 또는 Miniconda를 사용하는 경우 conda 패키지 관리자는 .NET을 포함하여 portaudio Python 패키지가 의존하는 비 Python 패키지를 설치하는 방법을 알고 있습니다.

마지막으로, 비공식 사전 컴파일 된 Windows 용 PortAudio 바이너리를 제공하는 사람들이 많은 것 같습니다. "portaudio windows binary"또는 "portaudio windows pre-compiled"를 검색하면 여러 가지를 찾을 수 있습니다. 나는 이것들 중 어느 것이 얼마나 잘 테스트되고, 최신인지 등을 모른다.

Anaconda / Miniconda를 사용 conda install pyaudio 하는 경우 pip install pyaudio 처음 보다는 사용 했어야합니다 . 또는에서 pip 사용할 수없는 패키지 에만 사용해야 합니다 . conda conda-forge

conda-forge 아직 설정하지 않은 경우 먼저 설정하는 것이 좋습니다.

그런 다음 이것이 필요한 모든 것입니다.

제대로 설치 되었다고 pip 가정 하는 패키지 와 달리 패키지는에 대한 종속성 으로 자동으로 설치 되거나 그렇지 않은 이유를 알려줍니다. portaudio conda portaudio pyaudio

의존성 관리자(Dependency Manager)?

의존성 관리자는 하나의 패키지가 요구하는 다른 패키지 들을 올라가며 설치해야할 패키지의 목록을 구성하고, 의존성을 지켜주는 일을 합니다.

오늘 포스팅의 목적은 의존성 관리자를 자세하게 들여다보는 것이 아니기 때문에,

설명은 여기까지하고 바로 poetry 에 대한 내용으로 넘어가겠습니다.

Poetry 는 pip 와 virtualenv Python 패키지 설치 문제: PyAudio, PortAudio 를 동시에 사용할 수 있게 해줍니다.

이 자체로 패키지 관리자이며 의존성 관리자이고 가상환경 관리자입니다.

여태껏 pip 와 virtualenv 를 따로 분리하여 사용했었는데,

이번기회에 배우게 되어 참 기쁘네요 ㅎㅎㅎ

본격적으로 poetry 를 설치해보겠습니다.

poetry 설치하기

curl 사용

저는 wsl (ubuntu 18.04) 에 이미 깔려있는 파이썬 버전을 사용하기 때문에, 버전에 따라

아래 명령어로 실행해야할 수 있습니다.

pip 사용

아래 명령어로 실행해야할 수 있습니다.

위와 같이 poerty 설치는 두가지 방법을 이용해 설치할 수 있습니다.

설치 이후 프로젝트를 생성해볼까요?

해당 명령어를 통해서 프로젝트를 생성할 수 있습니다.

간단한 사용법 정리

우선 프로젝트 셋업은 아래와 같이 진행하면 됩니다.

그럼 프로젝트가 생성되는데, 그 안에 아까 언급했던 pyproject.toml 이 생성됩니다.

pyproject.toml 파일을 이용한 패키지 설치는 아래와 같이 진행하면 됩니다.

의존성 추가

의존성을 추가하고 싶다면 아래 커맨드를 입력하면 됩니다.

해당 명령어를 입력하면 여러 Python 패키지 설치 문제: PyAudio, PortAudio 문구가 뜨게 되는데,

그중 Writing lock file 이라는 문구에서 만들어지는 파일이 바로 poetry.lock 파일 입니다.

poetry.lock 파일이 있으면 내가 현재 작성중인 프로젝트의 의존성과 동일한 의존성을 갖게 됩니다.

의존성을 유지하려면, 이 poetry.lock 파일은 반드시 필요하겠죠?

의존성 업데이트

poetry.lock 파일을 삭제하고 poetry install 을 하면 의존성을 최신으로 업데이트할 수 있지만,

이것은 한줄로 요약이 가능합니다. 아래와 같이요!

위 명령어로 whl 파일을 만들어 빌드할 수 있습니다.

가상환경 만들기

poetry 는 가상환경 또한 관리할 수 있기 때문에, 이 점을 이용하면 굳이 따로 virtualenv 를 사용할 필요가 없습니다.

파이썬 Python 패키지 설치 문제: PyAudio, PortAudio 패키지 사용하는 법

Gigi Sayfan

Gigi Sayfan Jul 15, 2016

파이썬 패키지를 이용하면 대규모 시스템을 분해하고 시스템의 모듈을 사용자와 다른 사람들이 Python 패키지 설치 문제: PyAudio, PortAudio 효율적으로 사용하고 재사용할 수 있는 일관된 방식으로 구성할 수 있습니다. 파이썬의 "배터리 포함(Batteries Included)"이라는 모토는 표준 라이브러리에 수많은 유용한 패키지가 미리 로드돼 있다는 의미입니다.

그러나 여러분이 활용할 수 있는 멋진 서드파티 패키지도 많습니다. 이번 튜토리얼에서는 패키지가 정확히 무엇이고, 패키지에서 모듈을 임포트하는 방법, 파이썬의 표준 라이브러리에서 내장 패키지를 찾아보는 방법, 서드파티 패키지를 설치하는 방법 등을 배우겠습니다.

패키지란 무엇인가?

패키지에 대해 이야기하기에 앞서 모듈에 대해 이야기해 봅시다. 모듈은 확장자가 *.py인 소스 파일로서 여러분(그리고 다른 모든 사람들)은 이곳에 프로그램을 구성하는 함수와 클래스를 작성합니다. 패키지는 파이썬의 계층적 네임스페이스 개념을 표현한 것입니다. 파이썬 선(禪)(Zen of Python)의 내용을 인용하면 다음과 같습니다.

파이썬 선의 전체 내용을 보려면 파이썬 대화식 세션에서 import this 를 입력합니다.

네임스페이스는 코드 구성 및 이름 충돌을 방지하는 데 이바지합니다. 이는 여러 사람이 함께 작업하거나 다른 사람이 개발한 패키지를 사용할 때 중요합니다.

패키지는 하위 패키지 및 모듈의 계층구조를 나타내지만 패키지와 하위 패키지가 디렉터리 및 하위 디렉터리인 파일시스템 기반일 필요는 없습니다. 패키지는 그보다 훨씬 더 유연합니다.

예제 패키지

"ansible"이라는 패키지를 살펴봅시다. 이 패키지는 표준 라이브러리의 패키지는 아닙니다. 나중에 서드파티 패키지를 찾아서 설치하는 방법을 볼 수 있을 것입니다. 지금은 디렉터리 파일 구조를 확인해 봅시다.

패키지는 일반적으로 파이썬 인터프리터의 site-packages 디렉터리에 설치됩니다. 이 디렉터리는 "lib" 아래의 어딘가에 위치합니다(버전이나 OS, 배포판에 따라 다름). 맥에서는 파이썬 2.7의 경우 "/lib/python2.7/site-packages"에 있을 것입니다. 다음은 "ansible" 패키지의 구성을 보여줍니다.

총 2개의 모듈과 15개의 디렉터리가 있습니다. 각 디렉터리는 메인 ansible 패키지의 하위 패키지입니다. ansible/utils 디렉터리를 살펴보면 추가 모듈과 하위 패키지가 하나 더 있음을 알 수 있습니다.

검색 경로

모듈을 임포트하면 파이썬은 검색 경로를 기반으로 검색 알고리즘을 수행합니다. 검색 경로는 검색을 시작할 디렉터리 목록에 해당합니다. 검색 경로는 sys.path 를 통해 이용할 수있는 디렉터리 목록이며, 이를 동적으로 조작할 수 있습니다(검색 경로의 항목을 추가, 제거, 이동). site-packages 디렉터리는 항상 존재합니다.

ansible/utils로부터 path.py Python 패키지 설치 문제: PyAudio, PortAudio 모듈을 임포트하하려면 다음 명령을 사용해야 합니다.

표준 os.oath 모듈도 사용하려면 다음 명령을 사용합니다.

이제 각 path 모듈이 서로 다른 네임스페이스에 속해 있기 때문에 충돌 없이 path 모듈을 하나 또는 모두 사용할 수 있습니다.

표준 라이브러리 탐색하기

표준 라이브러리에는 많은 패키지가 있습니다. 어떤 작업을 수행할 필요가 있는데 어떻게 할지 확신이 서지 않을 때마다 표준 라이브러리를 살펴볼 만한 가치가 있습니다. 수학, 셸 통합, OS 통합, 문자열 조작, 네트워킹 및 공통 파일 형식과 같은 범용 작업의 경우 표준 라이브러리에 잘 설계되고 성능이 뛰어나며 충분히 테스트된 패키지가 있을 가능성이 매우 높습니다 .

표준 라이브러리에 들어간다는 것은 대단한 일이므로 표준 라이브러리 패키지는 정말로 신뢰할 수 있습니다. 표준 라이브러리 패키지는 파이썬의 핵심 개발자에 의해 설계됐거나 엄격하게 검토되고 표준 라이브러리로 포함되기 전에 서드파티 라이브러리로 현장에서 많이 사용됐을 것입니다.

이곳에서 주제별로 구성한 표준 라이브러리의 모든 패키지를 확인할 수 있습니다.

표준 라이브러리는 훌륭하지만 표준이 아닌 몇 가지 특수 기능이 필요할 때가 있습니다. 그렇다고 해서 여러분이 처음부터 그것을 작성해야 한다는 의미는 아닙니다. 파이썬에는 수많은 코드를 자유롭게 개발하고 공유하는 활발하고 활동적인 커뮤니티가 있습니다. PyPI( Python Package Index)로 들어가 봅시다. PyPI에서는 공개적으로 사용 가능한 모든 패키지를 호스팅하고 이를 검색할 수 있는 종합 서비스를 제공합니다.

PyPI 둘러보기

PyPI에는 패키지가 찾아보기 가능한 색인으로 구성돼 있습니다. 여기서는 주제, 환경, 프레임워크, 개발, 상태, 대상 사용자, 라이선스, 자연어, 프로그래밍 언어(그렇습니다. 여러 프로그래밍 언어를 지원하는 파이썬 패키지가 있습니다), 운영체제별로 둘러보고 검색할 수 있습니다.

또한 파이썬 2와 파이썬 3 패키지를 구분하며, 최근 다운로드 수로 패키지가 얼마나 인기 있는지 알 수 있습니다. 예를 들어, PyPI에서 구할 수 있는 ansible 패키지를 이곳에서 확인할 수 있으며, 다음은 해당 패키지의 메타데이터입니다.

패키지 설치하기

PyPI의 패키지를 설치하는 방법에는 두 가지가 있습니다. 패키지를 다운로드한 다음 python setup.py install 을 실행하면됩니다. 그러나 현대적인 방법은 pip, setuptools, wheel을 사용하는 것입니다. pip는 Pip Installs Packages(이 또한 GNU와 마찬가지로 재귀 약자에 해당합니다)를 의미하며, 설치를 위한 프론트엔드에 해당합니다. python.org에서 내려받은 파이썬 2> = 2.7.9 또는 파이썬 3> = 3.4를 설치했다면 이미 pip와 setuptools가 설치돼 있을 테지만 다음과 같은 방법으로 최신 버전으로 업그레이드해야 합니다: 윈도우 환경에서 pip install -U pip setuptools 또는 python -m pip install -U pip setuptools 를 실행

pip를 사용해 휠을 설치합니다: pip install Python 패키지 설치 문제: PyAudio, PortAudio wheel

이전 버전의 파이썬을 사용하고 있다면 업그레이드를 고려해 보십시오. 파이썬을 업그레이드할 수 없다면 직접 pip, setuptools, wheel을 설치해야 할 것입니다. 구체적인 방법은 이곳을 참고합니다.

파이썬 패키지는 항상 환경에 설치됩니다. 여기서 다루지 않을 일반적인 관행은 가상 환경을 사용해 서로 다른 인터프리터 및/또는 설치된 패키지가 탑재된 다수의 독립적인 파이썬 설치를 관리하는 것입니다.

모범 사례

PyPA(Python Packaging Authority)에서는 패키징과 관련된 모범 사례에 대한 여러 지침을 제공합니다. PyPA가 중요한 이유는 이곳이 활발하게 개발 Python 패키지 설치 문제: PyAudio, PortAudio 중인 영역이고 권고 사항이 빠르게 발전하기 때문입니다.

또한 PyPI 대신 대체 저장소의 패키지를 설치하거나 좀 더 정교한 방식으로 pip를 사용하는 것과 같은 특별한 작업을 하고자 할 경우 훌륭한 토론과 실질적인 조언을 얻을 수 있습니다.

파이썬 초보자인 경우에는 핵심 언어를 배우고 이것을 가지고 재미있게 놀 수 있습니다. 하지만 금방 표준 라이브러리를 발견하게 되고, 더 많은 경험을 얻을수록 표준 라이브러리의 풍부함으로부터 점점 더 많은 혜택을 얻게 됩니다.

파이썬주의자(Pythonista)로서 Python 패키지 설치 문제: PyAudio, PortAudio 진화하는 다음 단계는 파이썬 커뮤니티가 PyPI에 내린 어마어마한 위업을 여러분의 시스템에 통합하는 것입니다. 재사용 가능한 파이썬 코드의 배포 단위인 패키지가 바로 이러한 생태계를 가능케 합니다.

Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.

Gigi Sayfan

Gigi Sayfan is a principal software architect at Helix — a bioinformatics and genomics start-up. Gigi has been developing software professionally for more than 20 years in domains as diverse as instant messaging, morphing, chip fabrication process control, embedded multimedia applications for game consoles, brain-inspired machine learning, custom browser development, web services for 3D distributed game platforms, IoT sensors and virtual reality. He has written production code in many programming languages such as Go, Python, C, C++, C#, Java, Delphi, JavaScript, and even Cobol and PowerBuilder for operating systems such as Windows (3.11 through 7), Linux, Mac OSX, Lynx (embedded), and Sony PlayStation. His technical expertise includes databases, low-level networking, distributed systems, unorthodox user interfaces, and the general software development lifecycle.


0 개 댓글

답장을 남겨주세요