PYTHON/Error Data

[PyCharm] CreateProcess error=2, 지정된 파일을 찾을 수 없습니다.

  • -

어느 날 갑자기 발생한 오류이다. 본인은 기본적으로 카카오톡 나와의 채팅방을 통해 압축 파일을 업로드한 후 데스크탑과 노트북에 파일을 옮기며 코드를 수정하고 수저이 완료되면 다시 데스크탑으로 옮기는 등의 복잡한 수작업을 통해 작업하고 있었다.

하지만 여느 때처럼 노트북으로 파일을 가져와 코드를 수정하려던 차에 다음과 같은 오류가 발생했다. 별 짓을 다 해봐도 고쳐지지 않는 오류라 그런지 열이 잔뜩 받았다.

 

세 줄 요약

  • 환경 변수니 뭐니 다 하라 하는데, 변경사항도 없었는데 갑자기 안 됐다. 그렇다보니 재설치해도 안 되더라.
  • 오류가 발생한 py 파일의 코드를 그대로 다른 파일로 복붙해서 사용하니 되더라. 이름도 재지정해도 된다.
  • 근데 당신에게 발생한 오류의 원인은 확실하게 모르니 다른 방법들도 시도해보기 바란다. (내 문제는 해결됐지만 아직도 내 오류의 원인은 모른다.)

 

 


 

오류 코드

Cannot run program "C:\Users\a\anaconda3\envs\py36\python.exe" (in directory "C:\Users\nhk49\PycharmProjects\trading"): CreateProcess error=2, 지정된 파일을 찾을 수 없습니다

 

여기저기 찾아보니 환경변수를 등록해야 한다는 등의 내용을 이야기하는데, 일단 본인의 컴퓨터 상에서 환경변수가 따로 변경될 만한 작업을 수행한 적이 없었기에 이 부분은 크게 고려하지 않았다. 오류가 발생하기 전에 기억이 나는 작업이라 하면 pyinstaller를 통해 main.py 파일을 exe 파일로 변경하려는 작업을 수행했던 것 뿐(물론 exe 파일을 생성한 후에도 py 파일을 실행하는 데에는 아무런 문제가 없었다. 즉, exe 파일을 생성한 후에도 py 파일은 정상적으로 동작했기에 해당 작업이 원인이 되지는 않았을 것이라 생각)

 

 

첫 번째 방법 : 쓸데 없는 인터프리터 삭제하기

기본적으로 파일을 데스크탑에서 노트북으로 옮기는 등의 작업을 할 때마다 인터프리터의 위치를 찾을 수 없는 오류가 발생했고, 그 때마다 인터프리터의 위치를 다시 잡아주어야 했던 것이 생각나서 인터프리터를 다시 잡아보기로 했다.

기존에 사용하던 인터프리터는 아나콘다를 통해 3.6 버전으로 새롭게 설치했었기 때문에, python.exe 파일은 anaconda-envs-py36 내에  위치해 있었다. 아무런 문제가 없음을 확인했다.

그럼에도... 인터프리터 모두 보기를 클릭하니 여러 개의 인터프리터가 등록되어 있었고, - 버튼을 눌러 사용하지 않는 인터프리터를 모두 삭제했다. 그 후 실행해 본 결과는 동일한 오류 발생.

 

 

두 번째 방법 : 인터프리터 변경하기

기존에는 Conda 환경의 인터프리터로 설정되어 있었으나, 시스템 인터프리터로 변경해보았다. 다만 시스템 인터프리터라 하더라도 당연히 아나콘다 환경을 기반으로 설치된 인터프리터로 설정했다. 

실행 결과, 변함 없이 지정된 파일을 찾을 수 없다는 오류가 발생했다. 
(아니 뭔 내가 뭘 어떻게 한 것도 아니고 니 혼자 가만히 있다가 갑자기 못 찾으면 나보고 어떡하자는 거냐.)

 

 

세 번째 방법 : 다들 말하는 환경 변수를 설정해보자.

물론 인터프리터는 다시 원래대로 복구시켜놨으므로, Conda 환경의 인터프리터이다. 프로젝트의 환경변수는 아래의 경로에서 설정할 수 있다고 한다.

[설정(setting)] - [도구(tool)] - [터미널(terminal)] - 환경변수에 APPS_ENV=local 입력. → 실행 결과 : 동일함.

 

타 블로그에서 하란 대로 시스템 환경 변수 설정 화면에서 환경 변수를 추가 → 실행 결과 : 동일함 → 다시 삭제함
(하기사 원래부터 없이도 잘 돌아갔는데 이게 생긴다고 될리가 없지)

 

 


728x90

 

 

네 번째 방법 : 너무 꼴받으니 이제 그만 재설치를 해보자.

이제 더는 꼴받아서 못참겠다. 그냥 재설치를 하고 인터프리터를 다시 잡아줘보자. 설치 중 불안한 점이 있다면 새로운 버전을 설치하게 되면 이전 버전과의 호환성으로 인해 발생하는 오류가 또 있지 않을까 하는 노파심 정도...? 그러니 직접 이전에 사용하던 버전을 찾아서 설치해주도록 하자.

파이참 사이트에서 왼쪽의 기타 버전을 클릭한 후, Community Edition 하단에서 설치하면 된다. Professional 버전은 유료 버전이라 보면 된다.

기타 버전 선택 후 Community Edition에서 선택하여 설치하자.

 

(좌) 캐시 및 로컬 기록과 설정 및 설치된 플러그인 삭제에는 체크 해제  /  (우) Add "bin" folder to the PATH는 체크하여 경로 설정

 

설치가 완료됐으니 기존에 있던 인터프리터를 삭제하고 시스템 인터프리터 설정에서 아나콘다의 인터프리터로 다시 설정해보자.

 

오 젠장할

 

 

다섯 번째 방법 : 삭제할 때, 캐시와 로컬 기록을 삭제해보자.

네 번째 방법에서는 삭제하지 않았던 데이터가 있으니, 이제 하나하나 삭제하고 재설치하는 방법으로 시도해보자. (제발 되거라)

설치 후 실행해보니 왠지 긴 시간 동안 설정을 잡아가고 있는데, 이럴수록 "이거 되는 건가?"하는 기대만 늘어나고 있다.

 

holly shit

 

 

여섯 번째 방법 : 설정과 플러그인도 삭제해보자.

모두 체크하여 캐시·히스토리·설정·플러그인을 모두 삭제한 후 재설치

재설치를 하니 인터프리터 목록이 비워져 있는 거로 나왔고, Conda 환경으로 다시 설정하여 잡으려고 하니 아나콘다 환경에서 설치했던 가상환경이 모두 인터프리터 목록으로 출력되었다.

비어있는 인터프리터와 Conda Environment 내에서 확인할 수 있는 기존에 설치된 가상환경의 인터프리터들

 

그 중에서 기존에 사용해왔던 py36 폴더의 인터프리터를 선택한 후, 다른 건 건들지 않고 모든 프로젝트에서 해당 인터프리터를 사용하도록 허용(Make available to all projects)한 후 확인을 눌렀다.

오 아주 즐겁다.

 

 

일곱 번째 방법 : 아나콘다 가상환경을 다시 생성해보자.

이렇게 되면 사실 라이브러리를 모두 다시 설치해야 하는 치명적인 단점이 있긴 하지만... 그래도 남은 방법이 없는 것을 어찌하나.. 아나콘다 프롬프트를 켜서 다음의 명령어를 입력해서 새로운 가상환경을 만들어보자.

conda create -n (가상환경 이름) python=(파이썬 버전)
conda create -n py366 python=3.6	## 예시

그렇게 실행해본 결과 동일한 오류가 발생했는데, 여기서 이상한 점이 확인됐다. 바로 새로운 파이썬 가상환경의 폴더이름은 py366이기 때문에 py36은 기존의 것인데, 오류 문구(좌측 사진) 상에서의 경로는 py36으로 설정되어 있는 모습을 확인했다. 이거는 뭔가 인터프리터로 설정해둔 것으로 동작하지 않고 있음을 의미하는 것이다. 그니까, 뭔가 경로를 잘 못 찾고 있음을 의미하는 것 같다.

그래서 왜 인터프리터로 py366을 설정했음에도 오류 문구에서는 py36의 경로에서 오류가 출력되는 것인지 확인해보고자 했다. 

 

새로운 프로젝트를 생성해서, py366과 py36으로 실행해보았다.

인터프리터를 py366으로 설정한 경우 새롭게 생성한 프로젝트는 정상적으로 동작했다. 그래서 py36으로 설정해서 실행해보니, 그 역시 정상적으로 동작하더라. 그럼 인터프리터 경로의 문제는 아닌 것이다. 

(좌) py366, (우) py36 로 실행시킨 결과.

 

그럼 동작하지 않는 main.py 파일을 새롭게 생성해서 실행해보자.

그니까, main.py 파일에 있던 기존의 코드를 mainn.py 파일에 옮긴 후, 그 mainn.py 파일을 디버그해보는 것이다. main.py 파일에 문제가 있는 게 아닐까 싶은 생각에 시도해보는 방법이다.

 

갑자기 됐다. 그럼 기존에 있던 main.py의 문제라는 건데, 그럼 그 main.py 파일을 삭제한 후, mainn.py 파일의 이름을 main.py로 바꿔서 다시 실행해보도록 하자.

된다. 왜 그랬던 건지는 모르겠지만, 파일 자체의 문제였던 것이기 때문에 인터프리터는 기존에 사용하던 py36을 그대로 사용했다. 그 이외의 변경 사항은 없다. 그냥 기존에 있던 코드를 그대로 복사해서 다른 파일에 붙여넣은 후,  그 파일을 그대로 실행시키면 된다.

 

 

여덟 번째 방법 : 경로를 재설정해보자.

어디서 본 글인진 모르겠지만, Edit Configurations에서 Default 인터프리터를 다른 인터프리터로 변경하라는 내용을 봤다.

 

된다. 글의 출처를 알 순 없지만... 작성자분에게 무한한 감사를 표한다.

 

 


728x90
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.