심심해서 잠도 안오겠다 -_-
python 가지고 놀다가 신기한 것 발견(?)
1. python2.x와 python3.x의 pyc 경로는 다르다.
2. python2.x와 python3.x의 pyc는 호환되지 않는다.
환경은 우분투 18.04 LTS. 설치된 버전정보는 다음과 같고
$ python --version Python 2.7.15+
$ python3 --version Python 3.6.9
|
python -m compileall . 과
python3 -m compileall . 의 결과는 아래와 같이
python(2.7.15)는 동일 경로상에 pyc로 생성되는데 반해
python3(3.6.9)는 __pycache__ 디렉토리 아래에 cpython 버전 정보를 기재하면서 pyc로 생성하게 된다.
.: 합계 20 drwxr-xr-x 3 minimonk minimonk 4096 12월 14 23:43 ./ drwxr-xr-x 5 minimonk minimonk 4096 12월 13 21:51 ../ drwxr-xr-x 2 minimonk minimonk 4096 12월 14 23:44 __pycache__/ -rw-r--r-- 1 minimonk minimonk 42 12월 14 23:43 test.py -rw-r--r-- 1 minimonk minimonk 145 12월 14 23:43 test.pyc
./__pycache__: 합계 12 drwxr-xr-x 2 minimonk minimonk 4096 12월 14 23:44 ./ drwxr-xr-x 3 minimonk minimonk 4096 12월 14 23:43 ../ -rw-r--r-- 1 minimonk minimonk 140 12월 14 23:43 test.cpython-36.pyc |
그리고 file 정보를 보면 pyc도 2.7대와 3.6대 byte-compiled로 나뉘게 되는데
python2.7의 pyc를 python2.7과 python3.6으로 실행하면
python3.6 버전으로는 2.7의 pyc를 실행할 수 없다면서 에러를 발생시킨다.
$ python test.pyc hello world aa
$ python3 test.pyc RuntimeError: Bad magic number in .pyc file
|
반대로 python3로 컴파일한 파일은
python2.7에서는 실행이 불가하고, python3.6으로는 실행이 가능하다.
----
[링크 : https://sysops.tistory.com/39]
[링크 : https://askubuntu.com/questions/153823/how-to-run-a-pyc-compiled-python-file]
[링크 : https://g0pher.tistory.com/364]