심심해서 잠도 안오겠다 -_-
python 가지고 놀다가 신기한 것 발견(?)
1. python2.x와 python3.x의 pyc 경로는 다르다.
2. python2.x와 python3.x의 pyc는 호환되지 않는다.
환경은 우분투 18.04 LTS. 설치된 버전정보는 다음과 같고
$ python --version $ python3 --version |
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로 나뉘게 되는데
$ file *
$ file __pycache__/* |
python2.7의 pyc를 python2.7과 python3.6으로 실행하면
python3.6 버전으로는 2.7의 pyc를 실행할 수 없다면서 에러를 발생시킨다.
$ python test.pyc $ python3 test.pyc |
반대로 python3로 컴파일한 파일은
python2.7에서는 실행이 불가하고, python3.6으로는 실행이 가능하다.
$ python test.cpython-36.pyc $ python3 test.cpython-36.pyc |
----
python -m compileall . |
[링크 : https://sysops.tistory.com/39]
$ pip3 install uncompyle6 $ uncompyle6 -o . your_filename.pyc |
[링크 : https://askubuntu.com/questions/153823/how-to-run-a-pyc-compiled-python-file]
'Programming > python(파이썬)' 카테고리의 다른 글
python 관련 문서들 (0) | 2020.01.09 |
---|---|
python exception (0) | 2020.01.02 |
python indent (0) | 2019.12.13 |
tensorflow, pytorch (0) | 2019.12.10 |
python pip 특정 버전설치 / 목록에서 설치 (0) | 2019.09.09 |