Python 작업공간 설정 방법
지난 5년 동안 나는 파이톤을 사용해 왔다.처음에는 학술과 여가 취미였고, 그 다음은 직업이었다.서로 다른 파이톤 버전에 여러 항목이 있다는 것이 줄곧 흔히 볼 수 있는 일이다.어떤 언어를 사용하든지 서로 다른 버전의 프로젝트를 겨냥하는 것은 악몽일 수 있다.파이썬이라고 해도 다를 게 없어요.사실은 상황이 더 나쁘다.예를 들어, 더 이상 지원되지 않음에도 불구하고 일부 라이브러리는 Python 2에만 적용됩니다.다행히도, 몇 가지 도구가 서로 다른 파이썬 버전을 빈틈없이 처리하는 데 도움을 줄 수 있다.
이 설명서에서는 Linux를 중점적으로 소개하지만, MacOS에 쉽게 적응할 수 있습니다.사실, 나는 MacBook 한 대가 일하고 있으며, 같은 절차를 따라 나의 작업 구역을 설정하고 있으며, 조금만 수정하면 된다.그 밖에 저는
zsh
을 기본 셸으로 사용하지만 이 안내서도 bash
에 적용됩니다.따라서 다음은 Python 작업공간을 설정하는 방법입니다.
첫걸음요구 사항 정의
실제 설정에 들어가기 전에, 가장 좋은 설정을 정의하는 데 시간이 좀 걸릴 것입니다.나에게 있어서 그것은 이렇게 보인다.
ipython
을 시작해야 합니다.pipenv
과 poetry
은 모든 Python 3+버전과 함께 사용해야 한다.두 번째 단계.여러 파이썬 버전 설치 및 구성
여러 버전을 설치하고 전환하려면
pyenv
을 사용합니다.pyenv
은 다음과 같은 이점을 제공합니다.$HOME
디렉토리에 설치됩니다.이것은 기본 Python 설치를 파괴할 위험이 없다는 것을 의미합니다.pypy
, anaconda
, CPython
, Stackless-Python
및 기타를 지원합니다!pyenv
을 제외한 pyenv-virtualenv
플러그인을 사용하여 가상 환경을 관리합니다.pyenv
및 플러그 인 설치작년 이래로 나는 맥OS와 리눅스에서 Homebrew을 사용해 왔다.따라서 다음 절차는 나에게 있어서 알 수 없는 운영체제이다.
brew install pyenv
brew install pyenv-virtualenv
가상 vs 디렉터리 만들기
모든 항목은 반드시 자신의 가상 환경이 있어야 한다.이런 방식을 통해 우리는 여러 항목을 한 번에 처리할 수 있으며, 그들의 의존 관계에 충돌을 도입하지 않는다.나는 나의 모든 Virtual NV를
$HOME/.ve
디렉터리에 저장한다.mkdir -p $HOME/.ve
폴더를 만든 후 경로를 ~/.zshrc
에 추가합니다. (bash 사용자는 ~/.bashrc
에 추가합니다.)cat <<"EOT" >> ~/.zshrc
# pyenv config
# Set virtualenv dir
export WORKON_HOME=~/.ve
# Initialize pyenv
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi
# Initialize pyenv-virtualenv
eval "$(pyenv virtualenv-init -)"
EOT
변수 WORKON_HOME
은 pipenv
where to place your virtual environments에게 알려준다.완료되면 새 창을 닫고 열거나 다음 명령을 실행하여 셸을 다시 시작할 수 있습니다.
exec $SHELL
필요한 모든 Python 버전을 설치합니다.
PY_DEFAULT=3.8.5
PY_VERSIONS=( $PY_DEFAULT 3.7.8 3.6.11 2.7.18 )
for py_version in "${PY_VERSIONS[@]}"
do
echo -e "Installing Python $py_version...\n\n"
# Install specific Python version
pyenv install $py_version
done
세 번째.설치 도구
의존 관계 관리에 대해 나는 두 가지 다른 도구를 사용한다. 그것이 바로
pipenv
과 최근의 poetry
이다.결국 나는 두 가지가 필요할 때 poetry
을 선택할 수 있다.그 밖에 저는 주피터 노트북에 의존하여 빠른 데이터 분석 임무를 완성합니다.그리고
ipython
은 특이한 파이톤 해석기로서다시 한 번 말하지만, 나는 전 세계 시설을 오염시키고 싶지 않다.이러한 상황을 피하기 위해서, 우리는
pyenv-virtualenv
을 사용하여 이 도구들을virtualenvs로 만들 수 있습니다.Jupyter,pipenv, 시를 설치합시다.
# Creating tools3 venv
pyenv virtualenv $PY_DEFAULT tools3
# Activating
pyenv activate tools3
# Upgrade pip
pip install --upgrade pip
# Install Jupyter
pip install jupyter
# Install Jupyter extensions
pip install jupyter_nbextensions_configurator rise
jupyter nbextensions_configurator enable --user
# pipenv
pip install pipenv
# poetry (using preview version to fix a bug in the 1.0.10 version)
pip install --pre poetry -U
pipenv
을 사용하는 경우 스크립트가 설치되었는지 확인합니다.다음과 같이 셸에 추가할 수 있습니다.echo 'eval "$(pipenv --completion)"' >> ~/.zshrc
poetry
의 경우:# Oh-My-Zsh
mkdir -p $ZSH/plugins/poetry
poetry completions zsh > $ZSH/plugins/poetry/_poetry
완성은 oh-my-zsh
플러그인이기 때문에, ~/의 플러그인 목록에 시를 추가해야 합니다.zshrc 파일입니다.plugins(
poetry
...
)
sed
을 사용하면 다음과 같은 이점을 얻을 수 있습니다.sed -i.bak 's/^plugins=(\(.*\)/plugins=(poetry\n \1/' ~/.zshrc
현재 우리는 poetry
을 설정하여 ~/.ve
내부에virtualenvs를 pipenv
처럼 만들어야 한다.echo 'export POETRY_VIRTUALENVS_PATH=$WORKON_HOME' >> ~/.zshrc
기타 시가 구성
또 하나,
pipenv
의 기본 동작은 .env
에 정의된 환경 변수를 프로젝트의 루트 디렉터리에 불러오는 것입니다.이 작업은 pipenv shell
과 pipenv run
을 실행할 때 두 가지 상황에서 수행됩니다.반면, poetry
은 이를 지원하지 않습니다.해결 방법으로 나는 수동으로 그것을 불러올 필요가 있다.이 과정을 자동화하기 위해 셸 함수를 만들었습니다.
poetry shell
이나 poetry run
을 실행할 때마다 셸 함수를 불러옵니다.만약 내가 그것을 사용하지 않으려고 한다면, 나는 POETRY_DONT_LOAD_ENV
변수를 설정할 수 있다.이것은 PIPENV_DONT_LOAD_ENV
의 작업 원리와 유사하다.cat <<"EOT" >> ~/.zshrc
# Get the poetry's full path
POETRY_CMD=$(which poetry)
# Allow poetry to load .env files
function poetry() {
# Define the full command. i.e. poetry [run|shell|version]
POETRY_FULL_CMD=($POETRY_CMD "$@")
# if POETRY_DONT_LOAD_ENV is *not* set, then load .env if it exists
# also, only loads when for "run" and "shell" commands.
if [[ -z "$POETRY_DONT_LOAD_ENV" && -f .env && ("$1" = "run" || "$1" = "shell") ]]; then
echo 'Loading .env environment variables…'
env $(grep -v '^#' .env | tr -d ' ' | xargs) $POETRY_FULL_CMD
else
$POETRY_FULL_CMD
fi
}
EOT
현재 virtualenv tools3
을 사용하지 않습니다.# Deactivating the venv
pyenv deactivate
네 번째 단계.통역사 우선 순위 설정
기왕 우리가 필요한 모든 버전을 설치한 이상, 우리는 반드시 어떤 우선순위를 확정해야 한다.기본적으로, 나는
poetry
또는 그 어떠한 다른 도구를 사용하고 싶지만, 그것들을 설치한virtualenv를 활성화하지 않으려고 한다.우리는 pyenv global
명령을 사용하여 실현할 수 있다.PY_DEFAULT=3.8.5
PY_VERSIONS=( $PY_DEFAULT 3.7.8 3.6.11 2.7.18 )
pyenv global $PY_VERSIONS tools3 system
다음 사항을 살펴보겠습니다.$ pyenv versions
* system (set by /home/miguel/.pyenv/version)
* 2.7.18 (set by /home/miguel/.pyenv/version)
2.7.18/envs/tools2
* 3.6.11 (set by /home/miguel/.pyenv/version)
* 3.7.8 (set by /home/miguel/.pyenv/version)
* 3.8.5 (set by /home/miguel/.pyenv/version)
3.8.5/envs/tools3
* tools3 (set by /home/miguel/.pyenv/version)
모든 것이 좋아 보이니 케이스를 다시 가동할 때가 되었다. 이렇게.예기치 않은 패키지 설치 방지
내가 자주 만나는 일은
pip
을 사용하여 전역 해석기에 패키지를 설치하는 것이다.앞에서 언급한 바와 같이, 모든 파이톤 해석기를 완전하게 유지하는 것은 좋은 생각이다.만약 우리가 어떤 물건을 설치해야 한다면, 나는 tools3을 위해 만든 것처럼 새로운virtualenv를 만드는 것을 더욱 좋아한다.현재, 우리는 어떻게 모든 Python 설치를 잠그나요?
이것은 사실 매우 간단하다.우리는
pip
을virtualenv가 활성 상태일 때만 패키지를 설치하는 것으로 설정할 수 있습니다.echo 'export PIP_REQUIRE_VIRTUALENV=true' >> ~/.zshrc
그럼 비파와 시는?
현재 Python 3.6의
poetry
프로젝트가 필요하다면 poetry
에 3.6 버전을 사용하라고 알려 드리겠습니다. 이것은 제가 설치한 Python 3.6.11을 사용하여virtualenv를 자동으로 만들 것입니다.예:
# pyproject.toml
...
[tool.poetry.dependencies]
python = "~3.6"
...
출력:$ poetry env use 3.6
Creating virtualenv sandbox-aBhl6cgV-py3.6 in /home/miguel/.ve
Using virtualenv: /home/miguel/.ve/sandbox-aBhl6cgV-py3.6
$ poetry shell
Loading .env environment variables…
Spawning shell within /home/miguel/.ve/sandbox-aBhl6cgV-py3.6
$ . /home/miguel/.ve/sandbox-aBhl6cgV-py3.6/bin/activate
(sandbox-aBhl6cgV-py3.6) $
결론
거의 이렇다!나는 이 강좌가 너에게 유용하길 바란다. 마치 나처럼.나는 작업 공간을 재배치해야 할 때마다 이 절차를 따른다.이 안내서에서 복사하고 붙이는 것이 아니라 셸 스크립트를 만들어서 자동화할 수도 있습니다.이 강좌는 처음에 https://medium.com/@henriquebastos/the-definitive-guide-to-setup-my-python-workspace-628d68552e14을 기반으로 하여 내가 자신의 업무 공간을 어떻게 설정하는지 계발했다.
How I Set up My Python Workspace은 miguendes's blog에 처음 등장했다.
Reference
이 문제에 관하여(Python 작업공간 설정 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/miguendes/how-i-set-up-my-python-workspace-59hb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)