program tip

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

radiobox 2020. 8. 25. 07:52
반응형

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

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

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

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

최신 정보:

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


최신 정보:

설정 (기본 설정)의 기본 설정 | 도구 | 터미널은 글로벌입니다.
각 프로젝트에 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""


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

감사합니다 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 4에는 IDE에 통합 된 virtualenv가 있습니다. 프로젝트 인터프리터를 선택할 때 virtualenv를 생성, 추가 또는 선택할 수 있습니다. 구성된 프로젝트 인터프리터에서 실행되는 "Python 콘솔"을 추가했습니다.

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


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

영상


Windows 버전을 사용하는 경우 매우 쉽습니다. 이미 가상 환경이있는 경우 해당 폴더로 이동하여 폴더 activate.bat내부를 찾습니다 Scripts. 그것의 복사 전체 경로 및 pycharm의 터미널을 누른 다음을 누릅니다에 붙여 넣기 Enter만하면됩니다!

새 가상 환경을 만들어야하는 경우 :

파일> 설정으로 이동 한 다음을 검색하여 project interpreter열고 톱니 바퀴 버튼을 클릭하고 원하는 위치에 환경을 만든 다음 첫 번째 단락을 따릅니다.

기어!


Mac에서는 PyCharm => Preferences ... => Tools => Terminal => Activate virtualenv 이며 기본적으로 활성화되어야합니다.


방금 pycharmactivate라는 스크립트를 홈 디렉토리에 추가했습니다. PyCharm (4.0.1) 파일> 설정> 도구> 터미널> 쉘 경로의 값을 / bin / bash --rcfile ~ / pycharmactivate로 설정합니다. 다른 프로젝트 및 virtualenv 디렉토리 / 이름이있는 경우 최고의 솔루션은 아니지만 저에게 적합합니다. 이 스크립트는 다음 3 줄을 포함하며 virtualenv가 프로젝트 디렉토리와 이름이 같다고 가정합니다.

source ~/.bashrc
projectdir=${PWD##*/}
source ~/.virtualenvs/$projectdir/bin/activate

Peter의 대답에 이어 .pycharmrc파일 의 Mac 버전은 다음과 같습니다.

source /etc/profile
source ~/.bash_profile
source  <venv_dir>/bin/activate

암탉


내 Windows 7 컴퓨터에서 작동하는 솔루션이 있습니다.

나는 PyCharm의 터미널이 cmd.exeWindows PATH변수 를로드하고 그 안에서 처음 찾은 Python 버전을 사용하는 실행 결과라고 생각 합니다 PATH. 이 변수를 편집하려면 내 컴퓨터 -> 속성 -> 고급 시스템 설정 -> 고급 탭-> 환경 변수 ... 버튼을 마우스 오른쪽 버튼으로 클릭하십시오 . 내에서 시스템 변수 섹션에서 선택하고 편집 PATH변수를.

편집 PATH 하기 전에 내 관련 부분은 다음과 같습니다 .

C : \ Python27 \;
C : \ Python27 \ Lib \ site-packages \ pip \;
C : \ Python27 \ Scripts;
C : \ Python27 \ Lib \ site-packages \ django \ bin;

... 그리고 편집 PATH (현재 3 줄만) :

C : [프로젝트 _ 경로] \ virtualenv-Py2.7_Dj1.7 \ Lib \ site-packages \ pip;
C : [프로젝트 _ 경로] \ virtualenvs \ virtualenv-Py2.7_Dj1.7 \ Scripts;
C : [프로젝트 _ 경로] \ virtualenvs \ virtualenv-Py2.7_Dj1.7 \ Lib \ site-packages \ django \ bin;

이를 테스트하려면 Windows 터미널을 열고 ( 시작 -> 입력 cmd하고을 누르십시오 Enter) 가상 환경을 사용하고 있는지 확인하십시오. 작동하면 PyCharm을 다시 시작한 다음 PyCharm의 터미널에서 테스트하십시오.


이것은 내가하고있는 일입니다 : 소스 코드 폴더에 activate_env.bat (windows, maybe .sh in linux) 파일을 만듭니다.

/env_yourenvlocate/scripts/activate.bat

다른 파일 deactivate_env.bat :

/env_yourenvlocate/scripts/deactivate.bat

터미널 창을 열 때마다 bat 파일을 실행하여 virtualenv를 활성화 / 비활성화하면 소스 코드 경로에 머무르며 경로를 다시 변경할 필요가 없습니다.

E:\Projects\django_study\src>active_env.bat

E:\Projects\django_study\src>../env_django_study/scripts/activate.bat
(env_django_study) E:\Projects\django_study\src>



(env_django_study) E:\Projects\django_study\src>deactive_env.bat

(env_django_study)E:\Projects\django_study\src>../env_django_study/scripts/deactivate.bat
E:\Projects\django_study\src>

Pycharm 2016.1.4v 이상을 사용해야하는 경우 "default path" /K "<path-to-your-activate.bat>"따옴표를 잊지 마세요.


또 다른 대안은 virtualenvwrapper 를 사용하여 가상 환경을 관리하는 것입니다. virtualenvwrapper 스크립트가 활성화 되면 pycharm이이를 사용할 workon수 있으며 pycharm 콘솔에서 간단한 명령을 사용할 수 있으며 사용 가능한 가상 환경을 제공합니다.

kevin@debian:~/Development/django-tutorial$ workon
django-tutorial
FlaskHF
SQLAlchemy
themarkdownapp
kevin@debian:~/Development/django-tutorial$ workon django-tutorial
(django-tutorial)kevin@debian:~/Development/django-tutorial$ 

이 방법은 프로젝트 당 임의의 가상 환경에서 작동해야하며 사용자가 만든 후크를 사용하므로 환경에 대한 가정을하지 않습니다.

당신은 쓰기:

  • 후크를 호출하는 전역 스크립트
  • PyCharm 프로젝트 당 후크 스크립트 (필수 아님)

현재 최신 PyCharm (Community 2016.1)에서는 프로젝트 별 후크를 호출하는 스크립트로 프로젝트 시작 터미널 설정을 허용하지 않습니다 . 이것은 내 ~/.pycharmrc:

if [ -r ".pycharm/term-activate" ]; then
   echo "Terminal activation hook detected."
   echo "Loading Bash profile..."
   source ~/.bash_profile
   echo "Activating terminal hook..."
   source ".pycharm/term-activate"
   source activate $PYCHARM_VENV
fi

Bash가 아닌 다른 것을 사용하는 경우 원할 경우 해당하는 것을 호출하십시오 .bash_profile.

이제 PyCharm "도구-> 터미널-> 셸 경로"를 설정하여이 스크립트를 호출합니다. 예 : /bin/bash --rcfile ~/.pycharmrc

마지막으로, 활성화 된 특정 가상 환경이 필요한 모든 PyCharm 프로젝트에 대해 PyCharm 프로젝트 루트 내에 파일을 만듭니다 .pycharm/term-activate. 이것은 후크이며 PyCharm 프로젝트에 대해 원하는 가상 환경의 이름을 정의합니다.

export PYCHARM_VENV=<your-virtual-env-name>

물론 특정 PyCharm 프로젝트의 터미널 환경에서 유용하다고 생각되는 모든 것으로 후크를 확장 할 수 있습니다.


Windows의 conda 가상 환경의 경우 배치 파일의 이름 activate.bat지정되지 않았는지 확인하십시오 . 그러면 conda activate명령 과 충돌 하여 배치 파일이 반복적으로 호출됩니다.

나를 위해 작동하는 것은 다음 셸 경로입니다.

"cmd.exe" /k ""C:\FullPathToYourProject\activate-env.bat""

그리고 activate-env.bat 파일에서 :

call activate myenvname

저는 각 프로젝트에 대해 별도의 가상 환경을 원했고이를 용이하게하기 위해 추가 파일을 갖는 것에 대해별로 신경 쓰지 않았습니다. 한 번만 수행하면 모든 프로젝트에서 작동하는 솔루션은 다음을 .bashrc또는에 추가하는 것입니다 .bash_profile.

if [ -d "./venv" ]; then
    source ./venv/bin/activate
fi

This checks if there is a virtual environment where the terminal is being opened, and if so activates it (and of course other relative paths could be used). PyCharm's terminal settings can be left as their default.


PyCharm 4.5.4

Create a file .pycharmrc in your home folder with the following contents

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

Using your virtualenv path as the last parameter.

Then set the shell Preferences->Project Settings->Shell path to

/bin/bash --rcfile ~/.pycharmrc

I don't why, but it doesn't work for me. PyCharm prints an error.

cmd.exe /K "<path-to-your-activate.bat>" It works, but it creates the same virtualenv for each project, and even if this is not necessary.

This receipt is working! But the string /env_yourenvlocate/scripts/activate.bat must contain quotes, like this "Full_path_to_your_env_locate\scripts\activate.bat"!

Deactivate the virtualenv is very easy - type in the terminal 'deactivate'

(virt_env) D:\Projects\src>deactivate
D:\Projects\src>

Solution for WSL (Ubuntu on Windows)

If you're using WSL (Ubuntu on Windows), you can also open bash as terminal in pycharm and activate a linux virtualenv.

Use a .pycharmrc file like described in Peter Gibson's answer; Add the .pycharmrc file to your home directory with following content:

source ~/.bashrc
source ~/path_to_virtualenv/bin/activate

In Pycharm File > Settings > Tools > Terminal add the following 'Shell path':

"C:/Windows/system32/bash.exe" -c "bash --rcfile ~/.pycharmrc"


Project specific virtualenv

The path to your virtualenv in .pycharmrc does not have to be absolute. You can set a project specific virtualenv by setting a relative path from your project directory. My virtualenv is always located in a 'venv' folder under my project directory, so my .pycharmrc file looks like this:

source ~/.bashrc
source ~/pycharmvenv/bin/activate #absolute path
source ./venv/bin/activate #relative path


BONUS: automatically open ssh tunnel to connect virtualenv as project interpreter

Add the following to your .pycharmrc file:

if [ $(ps -aux | grep -c 'ssh') -lt 2 ]; then
    sudo service ssh start 
fi

This checks if a ssh tunnel is already opened, and opens one otherwise. In File -> Settings -> Project -> Project Interpreter in Pycharm, add a new remote interpreter with following configuration:

+--------------------------+---------------------------------+-------+----+
| Name:                    | <Interpreter name>              |       |    |
| Select                   | 'SSH Credentials'               |       |    |
| Host:                    | 127.0.0.1                       | Port: | 22 |
| User:                    | <Linux username>                |       |    |
| Auth type:               | 'Password'                      |       |    |
| Password:                | <Linux password>                |       |    |
| Python interpreter path: | <Linux path to your virtualenv> |       |    |
| Python helpers path:     | <Set automatically>             |       |    |
+--------------------------+---------------------------------+-------+----+

Now when you open your project, your bash automatically starts in your virtualenv, opens a ssh tunnel, and pycharm connects the virtualenv as remote interpreter.

warning: the last update in Windows automatically starts a SshBroker and SshProxy service on startup. These block the ssh tunnel from linux to windows. You can stop these services in Task Manager -> Services, after which everything will work again.


터미널> 실행> 디버그> 구성 편집에 들어갈 때 하나의 옵션 여기에 이미지 설명 입력

여기에 이미지 설명 입력

적절한 conda 환경을 선택합니다. 또한 새 프로젝트를 만들 때이 위치를 구성하도록 요청합니다.

참고 URL : https://stackoverflow.com/questions/22288569/how-do-i-activate-a-virtualenv-inside-pycharms-terminal

반응형