본문 바로가기

Language/Python

[Python] 파이썬 x86/x64 동시 설치 및 Pyinstaller 설치

기존에 Python 2.7 x86 버전과 py2exe x86 버전으로 exe로의 빌드를 했었는데, 이번에 윈도우의 x64쪽의 시스템 폴더에 접근 할 일이 생겨서 이래저래 알아보다가 윈도우의 redirection 앞에 gg를 치고 결국 x64 파이썬을 사용하기로 맘을 먹은 일이 이번에 결정...


코드상으로 x86이 x64쪽 경로를 건드리는 방법이 존재하지 않을까?란 생각을 하다가 결국 x64방식을 사용하는 쪽으로 선회..

x86 기반으로 만들어진 코드에서 x64 쪽 시스템에 접근하는 방법이 존재하려나? -_- 그런 게 있는지는 모르겠다.

(상상은 할 수 있는 요소이니 테클하는 사람들이 없었음 싶다. -_-)


그러나 아직까지는 x86을 버릴 순 없고, 아예 둘 다 같이 설치해서 쓸 수는 없을까? 라고 고민하다가 삽질을 좀 많이 한 결과 알아낸 것이, 둘이 설치 폴더를 다르게 해주면 사용이 가능해진다는 단순한 논리에 봉착.. 

(솔직히 파이썬만이 문제가 아니고, 부수적으로 설치하는 플러그인들 때문에 머리가 좀 아팠음..)


파이썬의 경우 x86이나 x64 설치 본 둘다 설치 폴더는 항상 C:\Python27 로 지정이 된다.

이것을 겹치게하면 안 되니 x86과 x64 폴더로 나누어서 설치를 해주었다.

(이렇게 해도 되는지에 대한 파이썬의 구동 메카니즘 적 확신은 없었으므로 우선 저질러 보고 테스트 해본다.)






[그림. 1] 파이썬 x86/x64 설치 폴더 분류


보통 파이썬을 설치하는 경우 윈도우의 환경 변수에 그 경로들을 지정해줘야 하는 건 사용자들이라면 기본을 알 것이고...

그 경로는 다음과 같다.


- C:\Python27\

- C:\Python27\Scripts


이 부분을 위 [그림. 1] 과 같이 파이썬을 각각 설치했다면 환경 변수는 두 버전 모두 다 추가시켜줘야 했다.


즉, 아래와 같이 추가가 될 것이다.


- C:\Python27\x86

- C:\Python27\x86\Scripts

- C:\Python27\x64

- C:\Python27\x64\Scripts


이렇게 하면 기본적인 설치는 끝이난다. 코딩은 Pycharm을 이용하기 때문에 필요에 따라 설정에서 인터프리터를 선택해서 써주면 문제될 것 없이 여기서 끝내도 될 터...


하지만 커맨드 창을 이용할 경우에는 얘기가 달라진다. 그리고 또한 플러그인들 때문에라도 말이지...


두 폴더는 전부 python.exe 와 pythonw.exe 파일을 동일하게 가지고 있다.

커맨드에서 실행을 할 경우 이름이 겹치니깐 패스 설정이 우선인 녀석의 것만 실행이 되겠지!

난 개인적으로 x64 쪽의 두 파일명을 변경시켜주기로 했다. (유저 맘대로 변경...)


python64.exe, pythonw64.exe로 이름을 바꾸고 사용하니 개인적으로 편했다. 여기 까지는 좋은데,

문제는 플러그인들...


py2exe(파이썬 파일을 exe로 빌드해주는 녀석..)이 64bit 쪽 파일의 빌드를 하지를 못하는 버그가 있었고, 아무리 검색해도 해결법을 제시한 글은 보지를 못했다.


결론은, Pyinstaller 라는 툴을 이용하라는 것이었는데, 그 플러그인은 GUI 셋업 방식이 아닌, 커맨드 설치 방식이더라.

각각의 파이썬 폴더에 설치를 해줘야 하기 때문에 두 개의 인터프리터를 모두 이용해서 설치를 해주면 각각의 라이브러리 폴더에 설치가 된다. Pyinstaller 설치할 때의 방법은 아래와 같다.

(이 녀석은 x86 / x64 설치본이 따로 존재하지 않고 하나로 다 지원이 된다. 하지만 설치는 분명 나눠서 두번 해줘야 한다.)


ex) python.exe setup.py install        # x86 쪽 설치할 때..

ex) python64.exe setup.py install     # x64 쪽 설치할 때...


Pyinstaller는 커맨드 창에서 명령어를 입력하여 파일을 빌드시켜주는게 기본이라 나도 걍 그렇게 쓰고 있는데...

(저 녀석을 이용한 좀 더 손쉽게 빌드할 수 있는 툴을 만들 수도 있겠다만... 귀찮으므로 pass)


그러나 저 플러그인은 이름이 동일하게 양쪽에 설치가 된 것이므로 x86과 x64 빌드시의 실행명 역시 나눠줄 필요가 있다.

단순히 똑같이 파일명을 변경시켜주면 아주 잘 되더라.


- C:\Python27\x64\Scripts


위 경로의 보면 pyinstaller.exe, pyinstaller-script.py 파일이 있는데 이 것들을 단순하게 변경을 시켜주었다.


- pyinstaller.exe -> pyinstaller64.exe

- pyinstaller-script.py -> pyinstaller64-script.py


두 개의 파일명이 위의 규칙처럼만 변경해주면 동작되는데 아무 문제가 없었다.

파일명 변경이 거시기 하다면 빌드하는 방법을 배치파일로 만들어서 Full path까지 기입하여 사용해도 되겠지만 뭐 암튼 그냥 잘 되는 거 확인했으니 pass


pyinstaller를 이용하면 빌드하려는 파일이 32비트 파일이 될 것이고 pyinstaller64를 이용하면 64비트로 파일을 빌드해줄 것이다.

다른 플러그인의 경우도 커맨드 방식의 설치 본일 경우는 x86과 x64가 나뉜다면 위의 유형처럼만 조금 손봐서 이용하면 무난하게 이용 가능하지 않을까 싶다.


GUI 방식으로 설치를 하던, 콘솔 방식으로 설치를 하고 사용을 할 때 겹치지 않게 한다라는 점이 중요하겠다.