Python 2.6이 기본 Python으로 설치된 컴퓨터가 있습니다. 그런 다음 Python 2.7을 설치하고 새 설치에 대한 심볼릭 링크로 /usr/bin/python을 수동으로 만들었습니다.
그럼 내가 할게명령을 찾을 수 없는 문제 발생. 다시 설치하려고 합니다.
sudo apt-get remove command-not-found
다음 오류가 발생합니다.
/usr/bin/python does not match the
python default version. It must be
reset to point to python2.6
하지만 저는 정말로 Python 2.7이 기본값이기를 바랍니다. 이 혼란을 어떻게 해결합니까?
답변1
운영 체제에서 기본 Python(또는 Perl 등)을 변경하는 것은진짜나쁜 생각. 인터프리터는 실제로 운영 체제의 일부이며 해당 버전의 인터프리터와 함께 사용하도록 특별히 작성된 다른 운영 체제 구성 요소가 있을 수 있습니다.
예를 들어 Redhat에서 시스템 소프트웨어 업데이트를 수행하는 yum 도구는 Python 애플리케이션입니다. 당신은 정말로 이것을 깨고 싶지 않습니다. 이러한 응용 프로그램은 설치 중인 특정(비표준) Python 모듈에 따라 달라질 수 있으며, 이는 설치하는 버전에서 사용하지 못할 수도 있습니다. 예를 들어 Ubuntu에서는 Python으로 작성된 내장 OS 도구 중 일부가 Python 표준 라이브러리의 일부가 아닌 Storm이라는 ORM을 사용한다고 생각합니다. 새로 설치한 Python 2.7에 예상되는 특정 버전의 Storm 모듈이 설치되어 있습니까? Storm 버전이 있나요? 아니요? 그렇다면 운영 체제의 일부가 손상되었습니다.
올바른 방법은 선호하는 Python 버전을 설치하고 .bash_profile, 경로 등을 설정하여 사용할 사용자 계정을 설정하는 것입니다. Python의 virtualenv 모듈을 살펴볼 수도 있습니다.
답변2
피엔브
https://github.com/pyenv/pyenv
Pyenv를 사용하면 다음과 같이 개별 사용자에 대해 sudo를 사용하지 않고도 여러 Python 버전을 관리할 수 있습니다.Node.js NVM그리고루비 RVM.
Pyenv를 설치합니다:
curl https://pyenv.run | bash
그런 다음 다음에 추가하십시오 .bashrc
.
export PATH="${HOME}/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
설치할 Python 버전을 찾으세요.
pyenv install --list
원하는 Python 버전을 설치합니다.
# Increase the chances that the build will have all dependencies.
# https://github.com/pyenv/pyenv/wiki/Common-build-problems
sudo apt build-dep python3
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev liblzma-dev python-openssl git
# Build and install a Python version from source.
pyenv install 3.8.0
사용 가능한 Python 버전을 나열합니다.
pyenv versions
현재 우리는 다음을 가지고 있습니다:
* system (set by /home/cirsan01/.pyenv/version)
3.8.0
다른 Python 버전을 선택하세요.
pyenv global 3.8.0
python --version
python3 --version
둘 다 출력:
Python 3.8.0
이제 패키지를 정상적으로 계속 설치하고 사용할 수 있습니다.
pip install cowsay
python -c 'import cowsay; cowsay.tux("Python is fun")'
cowsay 'hello'
다음을 통해 모든 것이 깨끗한 환경에 로컬로 설치되었는지 확인할 수 있습니다.
python -c 'import cowsay; print(cowsay.__file__)'
which cowsay
프로젝트당 사용량
이전 섹션에서는 전역 설정에서 pyenv를 사용하는 방법을 살펴보았습니다.
그러나 일반적으로 원하는 것은 각 프로젝트에 대해 특정 Python 및 패키지 버전을 설정하는 것입니다. 그 방법은 다음과 같습니다.
먼저 이전과 같이 필요한 Python 버전을 설치합니다.
그런 다음 프로젝트 디렉터리에서 필요한 Python 버전을 설정합니다.
pyenv local 3.8.0
.python-version
버전 문자열이 포함된 파일을 생성합니다.
이제 프로젝트를 위해 로컬에 패키지를 설치해 보겠습니다. TODO: 좋은 방법이 없는 것 같습니다.https://stackoverflow.com/questions/30407446/pyenv-choose-virtualenv-directory/59267972#59267972
이제 누군가가 여러분의 프로젝트를 사용하고 싶을 때 다음과 같이 하세요:
pyenv local
그러면 Python 버전이 올바른 버전으로 설정됩니다.
관련 주제:
- https://askubuntu.com/questions/682869/how-do-i-install-a- Different-python-version-using-apt-get
- 여러 Python 버전을 관리하는 올바른 방법은 무엇입니까?
- https://stackoverflow.com/questions/10960805/apt-get-install-for- Different-python-versions/59268046#59268046
Ubuntu 18.04, pyenv 1.2.15에서 테스트되었습니다.
답변3
이 혼란을 어떻게 해결합니까?
그냥 재설치네요python
. 변경 사항이 취소됩니다(기호 링크).
왜 기본값으로 사용하시겠습니까? 필요할 때마다 python2.7
(실행 가능) 스크립트 시작 부분에 (shebang)을 사용하거나 포함시키세요.#!/usr/bin/python2.7
꼭 갖고 싶다고 고집한다면python2.7
시스템 전체 기본값으로 최신 버전의 Ubuntu가 사용됩니다(현재 Ubuntu 11.04, 코드명 Natty). 이 버전을 기본 버전으로 사용합니다.
앞으로는 심볼릭 링크와 마찬가지로 수동 개입을 피하시기 바랍니다. 이는 배포 관리 파일, 특히 Python 설치와 같은 복잡한 파일의 경우 특히 그렇습니다.
답변4
우리는 Mac과 Ubuntu에 많은 Python 배포판을 배치했습니다. 여기에 제가 권장하는 사항이 있습니다.
시스템 Python을 방해하지 말고 그대로 두십시오. 절대 사용하지 마십시오.
주요 Python 배포판만 필요한 경우 다운로드하여 설치하세요.천개생각에서. 설치 시 "내 시스템 Python으로 설정"을 선택하면 Canopy의 GUI 패키지 관리자에서 패키지를 설치할 수 있습니다.
pip
Canopy는 PyPi 패키지 관리자 명령과도 호환되므로 패키지(예pip install python-twitter
: ) 를 설치할 수 있습니다.
- 가상 환경을 사용할 계획이라면(즉, Python 프로그램을 개발 중이고 각 프로그램에 대해 전용의 깨끗한 Python 환경을 갖고 이들 사이를 쉽게 전환할 수 있기를 원함) Canopy보다 Anaconda를 추천합니다.가상 환경 관리 도구. 이것이 당신을 만들 것입니다