PyCharm의 Terminal에서 가상 환경이 자동으로 시작되지 않아 걸려 넘어지는 이야기

왠지 PyCharm의 테미날pip에서 전 세계site-package로 늘었다...
PyCharm의 테미나르PyInstaller에서도 포장을 읽지 않아요...
느낌이 좀 이상하긴 하지만 원인을 알 수가 없어요.
원래 가상 환경은 작동하지 않았다.
이번에는 가상 환경이 작동하지 않는 원인과 대책에 대해 고민한다.
역사를 갱신하다
2022/03/11: 초판
컨디션
  • Windows10
  • Python3.10
  • PyCharm Community Edition 2021.2.2
  • 1. PyCharm의 가상 환경
    보통 파이톤에서 가상 환경venv 등 다양한 지령을 사용해 가상 환경을 구축하는데 PyCharm에서는 이를 자동으로 설정한다.
    프로젝트를 만들 때 만든 폴더 venv 가 바로 그것입니다.
    프로젝트 폴더 구성 예
    myproject
    ├ myproject(ソースコード)
    │   ├ __init__.py
    │   └ main.py
    └ venv(仮想環境)
        ├ Lib
        │   └ site-packages
        └ Scripts
            ├ activate.bat
            ├ activate.ps1
            ├ ......
            └ python.exe
    
    예를 들어 main.py에서 다음과 같이 시도해 보세요.
    main.py
    import sys
    print(sys.executable)
    
    실행 중인 python.exe 경로를 표시하는 스크립트입니다.
    실제로 실행해보면 다음과 같이 될 것 같아요.
    실행 결과
    C:\work\myproject\venv\Scripts\python.exe
    
    파이썬을 설치할 때 생성된 전역python.exe이 아니라 방금 가상 환경에서 생성된 것python.exe을 나타낸다.
    나는 가상 환경의 작용을 충분히 이해할 수 있을 것이라고 생각한다.
    그럼 이 프로젝트 폴더 안에서는 다양한 작업을 해야 하고 가끔은 명령을 사용하기도 하죠.
    예를 들어 포장을 설치하고 싶을 때 이렇다.
    pip
    python -m pip install numpy
    
    PyCharm은 매우 우수하여 화면 아래Terminal를 클릭하면 가상 환경이 자동으로 시작된다.
    이 테미널 화면에서python 명령을 사용할 때 가상 환경에서python.exe를 수행한다는 것이다.
    따라서 이 프로젝트에만 패키지를 설치할 수 있어 다른 프로젝트에 영향을 주지 않는다.
    그걸 확인하기 위해 아래의 지령을 시도해 보세요.-c 선택할 수 있는 문자열을 실행합니다.;는 줄 바꾸기를 나타낸다.
    Terminal 화면
    Windows PowerShell
    Copyright (C) Microsoft Corporation. All rights reserved.
    
    PS C:\work\myproject>python -c "import sys; print(sys.executable)"
    
    실행 결과
    C:\Users\username\AppData\Local\Programs\Python\Python310\python.exe
    
    ......어?
    2. 시동이 걸리지 않는다!
    글의 첫머리도 썼는데 테미널에서 가상 환경이 아직 시작되지 않은 것을 주의하려면 시간이 오래 걸린다.
    시동이 걸린 화면을 한 번도 보지 못했기 때문이다.
    원래 PyCharm 이외에 가상 환경에 노출된 적이 없어 부팅 실패를 인지하지 못했기 때문이다.
    부팅이 성공하면 이런 화면이 나타납니다.
    Terminal 화면
    Windows PowerShell
    Copyright (C) Microsoft Corporation. All rights reserved.
    
    (venv) PS C:\work\myproject>
    
    한눈에 차이점을 알 수 있다.
    처음에(venv)가 있다.
    가상 환경의 폴더 이름입니다.
    【보충】
    테미날python에서도 python만 표시되거나 Microsoft Store가 켜진 경우 전 세계python.exe를 통과하는 경로가 없을 가능성이 높다.
    설정했을 거야!이런 분들은 우선순위에 주의하세요.Python\Python310Python\Python310\Scripts를 리스트의 상위에 올리면 해결될 수 있다.
    3. 이유
    가상 환경이 작동하지 않았다는 것을 알아차린 후 나는 원인과 대책을 조사했다.
    그런 다음 가상 환경을 수동으로 시작할 수 있습니다.
    그런데 왜 PyCharm의 Terminal이 자동으로 시작되지 않는지.
    솔직히 말하면, "바로 이거야!"확신할 만한 원인을 찾지 못했다.
    현재는'PyCharm의 버그 가능성이 가장 높음'이다.
    그나저나 이 문제에 대해서는 아래 게시물에서 논의를 했지만 최신 투고는 2022/03/04로 가장 최근이어서 앞으로 새로운 정보가 나올 수 있습니다.
    【참고】Python virtual envirnment is not automatically activated with powershell - youtrack
    그러나 다른 환경도 다른 원인일 수 있다. 나는 내가 시도한 일을 열거했다.
    3.1 PyCharm 설정File/Settings/Tools/Terminal에서는 Shell integrationActivate virtualenv 중 선택 여부를 확인했다.

    이렇게 해결하면 힘들지 않다.
    3.2 PowerShell 사용 권한
    PyCharm이 가상 환경을 시작할 때 특정 파일이 실행됩니다.
    이것은 venv/Scriptsactivate와 이름이 있는 서류다.
    확장자는 여러 가지이며 기본적으로 PowerShell 스크립트activate.ps1를 실행합니다.
    (난 믿어.)
    그러나 Windows 기본 설정에서 PowerShell 스크립트의 실행은 금지되어 있습니다.
    PowerShell을 시작하고 다음 명령을 실행하여 현재 PowerShell 실행 정책을 확인할 수 있습니다.
    PowerShell
    Get-ExecutionPolicy -List
    
    실행 결과
            Scope ExecutionPolicy
            ----- ---------------
    MachinePolicy       Undefined
       UserPolicy       Undefined
          Process       Undefined
      CurrentUser       Undefined
     LocalMachine    RemoteSigned
    
    나는 이 실행 전략을 바꾸려고 시도했지만,Terminal은 가상 환경을 자동으로 시작하지 않았다.
    【참고】PowerShell의 실행 정책 변경
    3.3 카드에 일본어 등이 있어요.
    프로젝트 경로에 일본어(전각 문자)가 있으면 자동 시작이 실패할 수 있습니다.
  • 데스크탑 포함 경로
  • 경로에 자신의 이름 포함
  • 경로에 전체 각도 공백
  • 포함
    이런 경우에는 주의가 필요하다.C:\work 등 반각 문자만 있는 곳에서 프로젝트를 만들어 보세요. 자동으로 시작될 수 있는지 시험해 보세요.
    3.4 재부팅
    다양한 설정을 변경해 반영되지 않았을 수도 있다.
    Terminal 화면, PyCharm, PC 호스트 등을 다시 시작하십시오.
    4. 대책
    4.1 PowerShell 대신 CMD 사용
    PyCharm의 기본 설정인 Terminal 화면에서 PowerShell을 사용할 것 같습니다.
    다음 그림Shell pathpowershell.exe가 지정되어 있습니다.

    Shell pathcmd.exe로 고친 후 테미널 화면을 다시 시작할 때...
    Terminal 화면
    Microsoft Windows [Version 10.0.19043.1526]
    (c) Microsoft Corporation. All rights reserved.
    
    (venv) C:\work\myproject>
    
    가상 환경이 시작되었습니다.
    PowerShell 태그가 사라지고 명령 프롬프트가 표시됩니다.
    색깔 없이 재가동하면 지난번 지령 이력이 사라지는 게 가장 간단한 대책이다.
    4.2 activate.직접 ps1 지정
    역시 파워쉘!이런 방향으로.
    아래 이미지Shell path에 다음을 입력합니다.
    Shell path
    powershell -NoExit -File ".\venv\Scripts\activate.ps1"
    

    Terminal 화면을 다시 시작할 때...
    Terminal 화면
    Windows PowerShell
    Copyright (C) Microsoft Corporation. All rights reserved.
    
    (venv) PS C:\work\programming\PyCharm\myproject>
    
    가상 환경이 시작되었습니다.
    PowerShell을 사용했다는 사실도 정확히 알 수 있습니다.
    【참고】PowerShell prompt doesn't show virtualenv - youtrack
    4.3 PowerShell 소개 덮어쓰기
    나는 PowerShell이 매우 상쾌하다고 생각한다. 단지 참고로 제공할 뿐이다.
    PowerShell이란 다른 스크립트에서 "스크립트를 실행하기 전에 반드시 실행해야 하는 처리"를 준비한 것 같습니다.
    【참고】owerShell을 사용하여 프로파일을 작성하는 방법
    【참고】구성 파일 정보 - PowerShell | Microsoft
    이 방법은 그 각본에 많은 것을 써서 대응하는 것이다.
    【참고】PyCharm으로teminal을 (venv)pwsh로 만들기
    【참고】PowerShell prompt doesn't show virtualenv
    5. 요약
    따라서 PyCharm의 테미널이 가상 환경을 자동으로 시작하지 못하는 이유와 대응 방법을 정리했다.
    묵인 설정이라면 누구나 걸려드는 함정이라고 생각했는데 정보가 많이 수집되지 않아서...
    다들 잘 피해갈 수 있을까요?

    좋은 웹페이지 즐겨찾기