Python pip
과 많은 Python 모듈은 CentOS Linux 리포지토리를 통해 제공됩니다. CentOS 7.x Linux에서는 pip
표준 배포 패키지 관리자( )를 사용하여 설치 및 설치할 수 있습니다.pymongo
yum install python-pip python-pymongo
그러나 저장소에 제공되는 버전은 pymongo
이미 너무 오래되었습니다. 의 버전 pip
도 일반적으로 뒤쳐져 있으므로 즉시 실행하는 것이 좋습니다 pip install --upgrade pip
.
여기서 무엇을 해야 하는지에 대한 합의가 이루어졌나요? 업데이트를 실행하면 pip
RPM의 파일을 덮어쓰므로 패키지 관리자로부터 불만 사항을 받을 수 있습니다.
pip
RPM에서 모듈을 설치 하지 않는 것이 더 낫습니까 ? 어쩌면 RPM에서 Python을 설치한 다음 모든 모듈을 설치하면 됩니다 pip
(Python 모듈이 RPM에서 나오지 않고 RPM에서 완전히 관리되지 않도록 pip
).
답변1
이 질문을 살펴보십시오. 다른 디렉토리에 pip를 설치하는 방법에 대해 설명합니다. 이렇게 하면 rpm 설치를 유지하고 최신 버전을 사용할 수 있습니다. rpm 버전을 사용할 계획이 없다면 아마도 제거할 것입니다.
답변2
시스템의 Python을 어지럽히지 않고 직접 Python을 사용하려면 Continuum의 Anaconda라는 제품을 확인하세요.http://Continuum.io/downloads Python 등의 설치는 홈 디렉토리에 설치되며 경로를 변경하여 시스템에 Python을 설치하지 않고 잠재적으로 시스템을 망칠 수 있습니다. 또한 이러한 옵션을 사용하여 가상 환경과 Conda 환경을 생성할 수 있으므로 여러 가지를 시도해 보고 마음에 들지 않으면 환경을 삭제할 수 있습니다.
답변3
RPM에서 pip와 모듈을 설치하지 않는 것이 더 낫습니까? 어쩌면 RPM에서 Python을 설치한 다음 pip에서 모든 모듈을 설치하면 됩니다(Python 모듈이 RPM에서 나오지 않고 pip에서 완전히 관리되지 않도록).
운영 체제의 패키지 관리자에서 pip 및 기타 Python 모듈을 설치할 수 있습니다. 많은 시스템 구성 요소가 Python에 의존하므로 더 이상 선택의 여지가 없을 수 있으며 운영 체제의 최소 설치에서도 기본적으로 Python + Python 모듈이 설치됩니다.
따라서 pip 또는 Python 모듈의 "시스템 전체" 버전을 업그레이드해야 하지만 패키지 관리자가 관리하는 파일을 방해하고 싶지 않을 때마다 다음을 수행해야 합니다.
다음 지침은 사용 가능한 Python 버전이 2.7.x인 경우 RHEL 파생 운영 체제에 적용됩니다. 설치된 Python 버전과 일치하도록 PYTHONPATH를 조정해야 합니다.
python-pip의 패키지 관리자 버전이 설치되어 있는지 확인하십시오. 예를 들어
yum -y install python-pip
.PYTHONPATH 환경 변수를 설정하는 profile.d 스크립트를 만듭니다.
# Ensure PYTHONPATH is configured to use /usr/local/lib*/python2.7/site-packages read -r -d '' pythonpath_profile_script <<'EOF' pythonpathmunge () { case ":${PYTHONPATH}:" in *:"$1":*) ;; *) if [ "$2" = "after" ] ; then PYTHONPATH=$PYTHONPATH:$1 else PYTHONPATH=$1:$PYTHONPATH fi esac } pythonpathmunge /usr/local/lib/python2.7/site-packages pythonpathmunge /usr/local/lib64/python2.7/site-packages export PYTHONPATH EOF echo "Creating the /etc/profile.d/pythonpath.sh profile script:" echo "${pythonpath_profile_script}" > /etc/profile.d/pythonpath.sh chown root.root /etc/profile.d/pythonpath.sh chmod -v 0644 /etc/profile.d/pythonpath.sh source /etc/profile.d/pythonpath.sh hash -r
그런 다음 다음을 통해 최신 버전의 pip 또는 기타 Python 모듈을 설치하도록 선택할 수 있습니다.
pip install --upgrade <<PYTHON MODULE NAME>> --ignore-installed --install-option="--prefix=/usr/local" --log /var/log/<<PYTHON MODULE NAME>>-install-$(date "+%Y%m%d%H%M%S").log
예를 들어
pip install --upgrade pip --ignore-installed --install-option="--prefix=/usr/local" --log /var/log/pip-install-$(date "+%Y%m%d%H%M%S").log hash -r # Notice the use of `hash -r` to refresh bash's hash table of recently # executable programs. Without doing this you may find that the 'pip' # command being used is not the version you just installed.
/usr/local
이렇게 하면 시스템 패키지 관리자가 관리하는 파일을 방해하지 않는 위치 에 요청된 Python 모듈이 설치됩니다 . 이 --ignore-installed
옵션은 pip가 모듈의 기존 버전에 닿지 않도록 합니다. 또한 PYTHONPATH 환경 변수를 사용하기 때문에 이러한 /usr/local/lib*/python2.7/site-packages
경로는 시스템에 설치된 패키지보다 먼저 사용됩니다. 즉
[root@localhost ~]# python
Python 2.7.5 (default, Sep 15 2016, 22:37:39)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print '\n'.join(sys.path)
/usr/local/lib64/python2.7/site-packages <---
/usr/local/lib/python2.7/site-packages <---
/root
/usr/lib64/python27.zip
/usr/lib64/python2.7
/usr/lib64/python2.7/plat-linux2
/usr/lib64/python2.7/lib-tk
/usr/lib64/python2.7/lib-old
/usr/lib64/python2.7/lib-dynload
/usr/lib64/python2.7/site-packages
/usr/lib/python2.7/site-packages
>>>
마지막으로, 적어도 CentOS/RHEL에서 이 /usr/local/bin
경로는 PATH 환경 변수의 다른 시스템 바이너리 경로 앞에 있으므로 /usr/local/bin에 설치된 최신 바이너리가 시스템에 설치된 바이너리보다 우선합니다. 즉
[root@localhost ~]$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
답변4
여기서 무엇을 해야 하는지에 대한 합의가 이루어졌습니까?
예, 시스템 관리 Python 설치를 수동으로 수정하지 마십시오(pip 실행) - 참조"sudo pip" 실행의 위험은 무엇입니까?이 주제에 대한 심층적인 토론을 보려면 pip 이슈 1668을 읽어보세요.기본값은 --user입니다.및 이와 관련된 기타 문제.
가장 일반적인 솔루션은 다음과 같습니다.
- 사용자의 홈 디렉터리(사용자 계획)
- 소스에서 Python을 컴파일하고 시스템 인스턴스 대신 이 인스턴스를 사용합니다.
--target
이론적으로 또 다른 가능한 해결책은 pip 옵션을 사용 하고 PYTHONPATH
환경 변수를 설정하는 것입니다. 하지만 --target
다양한 옵션이 있습니다(현재 12개).질문.