Arch에 Python 패키지를 설치하는 데 권장되는 방법은 무엇입니까? AUR에서 검색하여 설치하거나(또는 PKGBUILD
패키지를 직접 만들 파일을 생성) pip
?
pip
팩맨과 AUR을 먼저 설치했지만 패키지에 혼합하는 것이 현명한 것인지 확실하지 않았습니다.
답변1
모든 사용자에게 Python 패키지가 필요하지 않은 경우 다음과 같이 집에 설치할 수 있습니다.
pip install --user packagename
집에 설치해도 패키지 관리자와 충돌하지 않습니다.
기본적으로 pip install --user
사용자 사이트 디렉터리에 설치됩니다. 일반적으로 다음과 같습니다 /home/lesmana/.local/lib/python3.6/site-packages
.
다음 명령은 사용자 사이트 위치와 같은 정보를 인쇄합니다.
python -m site
사용자 정의 설치 위치:
PYTHONUSERBASE=$HOME/some/dir pip install --user packagename
그러면 아래의 모든 항목이 설치됩니다.$HOME/some/dir
달리기:
PYTHONUSERBASE=$HOME/some/dir $HOME/some/dir/bin/progname
바라보다도트 매뉴얼더 많은 정보를 알고 싶습니다.
모든 사용자가 Python 패키지를 사용할 수 있도록 하려면 설치하기 가장 좋은 위치는 다음과 같습니다 /opt
.
PYTHONUSERBASE=/opt/packagedir pip install packagename
(누락된 부분을 참고하세요 --user
)
위와 같이 실행합니다.
PYTHONUSERBASE=/opt/packagedir /opt/packagedir/bin/progname
배경 정보: /opt
일반적으로 gnu/linux 배포판에서는 로컬 사용자나 시스템 관리자가 자신만의 것을 설치할 수 있는 디렉토리로 간주됩니다. 즉, 배포판의 패키지 관리자는 일반적으로 /opt
.파일 시스템 계층 표준
/bin
사용자 편의를 위해 래퍼 스크립트를 작성하여 또는 에 배치해야 합니다 /usr/bin
. 여전히 배포 패키지 관리자와 충돌할 위험이 있지만 적어도 래퍼 스크립트 파일일 뿐입니다. 따라서 가능한 손상은 최소화됩니다. 배포 패키지 관리자와의 충돌 위험을 더욱 최소화하기 위해 래퍼 스크립트의 이름을 local-foo
또는 와 같은 이름으로 지정할 수 있습니다 .custom-foo
또는 래퍼 스크립트를 PATH
포함하고 배치하도록 수정할 수 있습니다. /opt/bin
그러나 이를 위해서는 다시 정의된(또는 일부) 시스템 파일을 수정해야 하며 PATH
배포 패키지 관리자가 이 파일을 다시 덮어쓸 수 있습니다.
간단히 말해서, 모든 사용자를 대상으로 설치하려면 에서 수행하십시오 /opt
. 편의상 래퍼 스크립트를 어디에 배치할지 판단이 필요합니다.
/opt
파일 시스템 계층 표준에 대한 추가 정보:
답변2
ArchLinux를 위한 올바른 길
ArchLinux에 PYTHON 패키지를 설치하는 올바른 방법은 PACMAN을 사용하는 것입니다! Python3에 패키지를 설치하려면 다음을 사용해야 합니다.
sudo pacman -S python-'package'
Python2에서 패키지를 설치하려면 다음을 사용해야 합니다.
sudo pacman -S python2-'package'
대부분의 Python 패키지는 ArchLinux 저장소에 있지만 일부는 AUR(ArchLinux 사용자 저장소)에 없습니다. 이러한 패키지의 경우 PKGBUILD 파일을 다운로드하여 컴파일해야 합니다. 그 후에는 PACMAN을 사용하여 설치를 완료해야 합니다.
makepkg -s
sudo pacman -U 'compiled-package'
ArchLinux의 두 번째 올바른 길
패키지가 AUR에 없거나 PKGBUILD가 작동하지 않는 경우 PIP를 사용하여 Python3에 설치할 수 있습니다.
sudo pip install 'python-package'
또는 Python2
sudo pip2 install 'python-package'
깨닫다:pip
공유된 동일한 설치 폴더를 사용할 때 pacman
, 특히 모든 시스템 패키지( sudo pacman -Suy
)를 업데이트할 때 충돌 오류가 발생합니다. 항상 위의 첫 번째 옵션을 선택해야 합니다. 충돌 문제를 해결하려면 패키지를 제거하고 pip
해당 패키지를 ( )에 설치하면 됩니다.pacman
pip uninstall 'python-package'
기회를 줘도 된다 virtualenv
.conda
일부 Python 애플리케이션이나 Python 패키지를 개발하려는 경우 더 나은 옵션은 가상 환경을 사용하는 것입니다.
Python 패키지 애플리케이션의 경우 다음을 시도해야 합니다.poetry
이는 현재 애플리케이션을 처음부터 끝까지 관리하는 데 더 나은 옵션입니다. 이는 requirements.txt
+ 보다 더 나은 옵션 입니다 setup.py
.
또 다른 간단한 옵션은 python-virtualenv
. 이는 코드에 이식성을 제공하고 이전 패키지를 유지 관리합니다. 설치하다
sudo pacman -S python-virtualenv
그리고 이것을 시도해 보세요
virtualenv -p /usr/bin/python3 yourenv
source yourenv/bin/activate
pip install package-name
이 환경을 생성할 때 이 환경에만 설치되도록 패키지를 yourenv
설정하게 됩니다 .pip
전체 시스템을 타겟팅하지 않음.
Linux에서 패키지를 사용하거나 관리하는 방법에 대해 자세히 알아보려면 conda
다음 링크가 유용할 수 있습니다 virtualenv
.
Jupyter Notebook에서 Python 패키지 설치
이러한 규칙을 따르면 ArchLinux가 충돌하지 않으며 PACMAN과 PIP 사이에 종속성 문제가 발생하지 않습니다.
유용하길 바랍니다!
답변3
2021년 현재 실무 업데이트:
배포판의 일부로 소프트웨어를 릴리스하려는 경우 배포판의 패키지 관리자를 사용하십시오. 다른 작업을 하고 있다면 아마도 venv를 사용하는 것이 답일 것입니다(참조:https://docs.python.org/3/tutorial/venv.html).
이는 배포판이 이전 패키지와 함께 제공되거나 일부 패키지가 이전 버전의 패키지에 의존하는 상황을 해결하는 데 도움이 되며 시스템 업그레이드의 영향과 Python 버전 간의 비호환성을 피하는 데 도움이 됩니다.
특히 루트로서 venv 외부에서 pip를 사용하지 마십시오. 이는 시스템 패키지를 손상시키고 무언가를 손상시킬 뿐입니다. 시스템 전체 패키지 관리자가 있는 언어와 패키지 종속성 관리를 캡슐화해야 하는 배포판 간의 어색함은 실제로 상호 작용이 좋지 않지만 venv를 사용하면 이를 피할 수 있습니다.
2013년 답변:
일반적으로 배포판에서는 배포판의 패키지 관리자를 사용하는 것이 좋습니다. 물론 pip(또는 Perl 세계에서는 cpan)를 사용하여 설치하거나 직접 컴파일하고 설치할 수 있습니다. 그러나 이렇게 하면 배포판의 패키지 관리자는 이에 대해 알지 못하며 해당 종속성이나 업데이트를 관리할 수 없습니다.
pip를 사용하는 것은 자신의 패키지를 컴파일하고 설치하는 것과 거의 동일합니다. 원하는 경우 이를 수행할 수 있지만 배포판의 패키지 관리자를 선호합니다.
답변4
여기에 있는 다른 답변 외에도 이 python-virtualenv
패키지를 확인하세요. 이는 종속성이 다르고 버전 번호가 일치하지 않는 여러 프로젝트에서 개발하는 경우 유용할 수 있습니다.
https://wiki.archlinux.org/index.php/Python_VirtualEnv
또한 pip와 virtualenv에는 두 가지 변형이 있습니다. 하나는 Python 2용이고 다른 하나는 Python 3용입니다. 구문 오류로 인해 설치가 실패하는 경우 잘못된 버전을 사용하려고 시도한 것일 수 있습니다.