[python] PyCharm의 터미널에서 virtualenv를 활성화하려면 어떻게해야합니까?

PyCharm을 설정하고 virtualenv (virtual env 명령을 통해 또는 PyCharm에서 직접)를 생성하고 해당 환경을 통역사로 활성화했습니다. 모든 것이 잘 작동합니다.

그러나 “도구, 터미널 열기”를 사용하여 터미널을 열면 제공된 쉘 프롬프트가 가상 환경을 사용 하지 않습니다 . source ~/envs/someenv/bin/activate활성화 하려면 해당 터미널 내에서 여전히 사용해야 합니다.

또 다른 방법은 셸에서 환경을 활성화하고 해당 환경에서 PyCharm을 실행하는 것입니다. 이것은 “실행 가능”하지만 매우 추하고 PyCharm에서 환경이나 프로젝트를 전환하면 큰 문제가 있음을 의미합니다. 이제 완전히 잘못된 환경을 사용하고 있습니다.

“Tools, Open Terminal”이 가상 환경을 자동으로 활성화하도록하는 다른 훨씬 더 쉬운 방법이 있습니까?



답변

편집하다:

https://www.jetbrains.com/pycharm/whatsnew/#v2016-3-venv-in-terminal 에 따르면 PyCharm 2016.3 (2016 년 11 월 출시)은 즉시 사용할 수있는 터미널에 대한 virutalenv 지원을 제공합니다.

Auto virtualenv는 bash, zsh, fish 및 Windows cmd에 대해 지원됩니다. 설정 (환경 설정) |에서 쉘 환경 설정을 사용자 정의 할 수 있습니다. 도구 | 단말기.


이전 방법 :

.pycharmrc다음 내용으로 홈 폴더에 파일 을 만듭니다.

source ~/.bashrc
source ~/pycharmvenv/bin/activate

virtualenv 경로를 마지막 매개 변수로 사용합니다.

그런 다음 셸 환경 설정-> 프로젝트 설정-> 셸 경로를

/bin/bash --rcfile ~/.pycharmrc


답변

최신 정보:

설정 (기본 설정)의 기본 설정 | 도구 | 터미널은 글로벌입니다.
각 프로젝트에 venv를 사용하는 경우 현재 경로 변수와 기본 venv 이름을 사용해야합니다.

"cmd.exe" /k ""%CD%\venv\Scripts\activate"" 

Windows 사용자의 경우 : 가상 환경에서 PyCharm을 사용할 때 /K매개 변수를 사용 cmd.exe하여 가상 환경을 자동으로 설정할 수 있습니다 .

PyCharm 3 또는 4 : Settings, Terminal, Default shell및 추가 /K <path-to-your-activate.bat>.

PyCharm 5 : Settings, Tools, Terminal, 그리고 추가 /K <path-to-your-activate.bat>Shell path.

PyCharm 2016.1 또는 2016.2는 : Settings, Tools, Terminal, 그리고 추가 ""/K <path-to-your-activate.bat>""Shell path(따옴표 마음) 및 추가 할 수 있습니다. 또한 cmd.exe 주위에 따옴표를 추가하면 다음과 같은 결과가 나타납니다.

"cmd.exe" /k ""C:\mypath\my-venv\Scripts\activate.bat""


답변

Windows 사용자의 경우 Windows에서 PyCharm 및 가상 환경을 사용하는 경우 cmd.exe에 / k 매개 변수를 사용하여 가상 환경을 자동으로 설정할 수 있습니다.

설정, 터미널, 기본 셸로 이동하여 /K <path-to-your-activate.bat>.

나는 이전 응답에 대해 언급 할 평판이 없으므로이 수정 된 버전을 게시합니다. 이것은 정말로 많은 시간을 절약합니다.

최신 정보:

참고 : Pycharm은 이제 가상 환경을 직접 지원하며 저에게 잘 작동하는 것 같습니다. 따라서 더 이상 해결 방법이 필요하지 않습니다.


답변

Peter의 답변과 실험을 바탕으로 다음을 해결하는 좋은 “일반 솔루션”을 찾았습니다.

  • 로그인 쉘의 동작을 복원합니다. PyCharm은 일반적으로 로그인 셸을 실행하지만 –rcfile은이 문제를 중지했습니다. 스크립트는 여전히 –rcfile을 사용하지만 로그인 쉘의 INVOCATION 동작을 에뮬레이트하려고합니다.
  • 각 환경에 대해 rcfile을 생성 할 필요가 없습니다.
  • 환경을 변경하는 경우 프로젝트 설정을 업데이트 할 필요가 없습니다.

이 스크립트를 bin 디렉토리 어딘가에 놓습니다. 예 : ~ / bin / pycharmactivate

if [ -r "/etc/profile" ] ; then . /etc/profile ; fi
if [ -r "~/.bash_profile" ] ; then
    . ~/.bash_profile
elif [ -r "~/.bash_login" ] ; then
    . ~/.bash_login
elif [ -r "~/.profile" ] ; then
    . ~/.profile
fi
ACTIVATERC=`cat .idea/workspace.xml | perl -n -e 'print "\$1/bin/activate" if m:option name="SDK_HOME" value="\\\$USER_HOME\\\$(.*)/bin/python":'`
if [ -n "$ACTIVATERC" ] ; then . "$HOME/$ACTIVATERC" ; else echo "Could not find virtualenv from PyCharm" ; fi

그런 다음 PyCharm의 셸 경로를 다음과 같이 설정합니다.

/bin/bash --rcfile ~/bin/pycharmactivate


답변

이제 PyCharm 4에는 IDE에 통합 된 virtualenv가 있습니다. 프로젝트 인터프리터를 선택할 때 virtualenv를 생성, 추가 또는 선택할 수 있습니다. 구성된 프로젝트 인터프리터에서 실행되는 “Python 콘솔”을 추가했습니다.

여기에 더 많은 정보가 있습니다.


답변

감사합니다 Chris, 귀하의 스크립트는 일부 프로젝트에서는 작동했지만 내 컴퓨터에서는 모두 작동하지 않았습니다. 여기 내가 작성한 스크립트가 있으며 누구나 유용하다고 생각합니다.

#Stored in ~/.pycharmrc 

ACTIVATERC=$(python -c 'import re
import os
from glob import glob

try:
  #sets Current Working Directory to _the_projects .idea folder
  os.chdir(os.getcwd()+"/.idea")

  #gets every file in the cwd and sets _the_projects iml file
  for file in glob("*"):
    if re.match("(.*).iml", file):
      project_iml_file = file

  #gets _the_virtual_env for _the_project
  for line in open(project_iml_file):
    env_name = re.findall("~/(.*)\" jdkType", line.strip())
    # created or changed a virtual_env after project creation? this will be true
    if env_name:
      print env_name[0] + "/bin/activate"
      break

    inherited = re.findall("type=\"inheritedJdk\"", line.strip())
    # set a virtual_env during project creation? this will be true
    if inherited:
      break

  # find _the_virtual_env in misc.xml
  if inherited:
    for line in open("misc.xml").readlines():
      env_at_project_creation = re.findall("\~/(.*)\" project-jdk", line.strip())
      if env_at_project_creation:
        print env_at_project_creation[0] + "/bin/activate"
        break
finally:
  pass
')

if [ "$ACTIVATERC" ] ; then . "$HOME/$ACTIVATERC" ; fi


답변

나는 위의 모든 답변을 보았지만 그중 어느 것도 나를 위해 충분히 우아하지 않습니다. Pycharm 2017.1.3 (내 컴퓨터에서)에서 가장 쉬운 방법은 및 옵션 을 열고 Settings->Tools->Terminal확인하는 것 입니다.Shell integrationActivate virtualenv

영상