PyCharm의 Terminal에서 가상 환경이 자동으로 시작되지 않아 걸려 넘어지는 이야기
pip
에서 전 세계site-package
로 늘었다...PyCharm의 테미나르
PyInstaller
에서도 포장을 읽지 않아요...느낌이 좀 이상하긴 하지만 원인을 알 수가 없어요.
원래 가상 환경은 작동하지 않았다.
이번에는 가상 환경이 작동하지 않는 원인과 대책에 대해 고민한다.
역사를 갱신하다
2022/03/11: 초판
컨디션
보통 파이톤에서 가상 환경
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\Python310
와Python\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 integration
와Activate virtualenv
중 선택 여부를 확인했다.이렇게 해결하면 힘들지 않다.
3.2 PowerShell 사용 권한
PyCharm이 가상 환경을 시작할 때 특정 파일이 실행됩니다.
이것은
venv/Scripts
리activate
와 이름이 있는 서류다.확장자는 여러 가지이며 기본적으로 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 path
에 powershell.exe
가 지정되어 있습니다.이
Shell path
를 cmd.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의 테미널이 가상 환경을 자동으로 시작하지 못하는 이유와 대응 방법을 정리했다.
묵인 설정이라면 누구나 걸려드는 함정이라고 생각했는데 정보가 많이 수집되지 않아서...
다들 잘 피해갈 수 있을까요?
Reference
이 문제에 관하여(PyCharm의 Terminal에서 가상 환경이 자동으로 시작되지 않아 걸려 넘어지는 이야기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/__Lily__/items/71c75566f067c19c18aa텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)