2018년 11월 1일 목요일

상위 디렉토리의 파이썬 패키지 임포트하기


아래와 같은 디렉토리 구조를 갖는 파이썬 프로젝트가 있다고 합시다.
sample/__init__.py
sample/foo.py
tests/context.py

context.py 코드에서 상위 디렉토리인 sample 패키지를 import 하기 위해 context.py 파일에 아래와 같은 코드를 작성할 수 있습니다.
import os
import sys
sys.path.insert(0, os.path.abspath('..'))

import sample

tests 디렉토리 밑에서 아래와 같이 context.py를 실행하면 이상 없이 작동합니다.
$ python context.py
하지만 tests 상위 디렉토리에서 아래와 같이 context.py를 실행하면 에러가 발생합니다.
$ python tests/context.py

context.py 코드를 아래와 같이 수정하면 어느 디렉토리에서 실행하든지 이상 없이 작동합니다.
import os
import sys
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))

import sample

히치하이커를 위한 파이썬 가이드의 프로젝트 구성하기 부분을 보던 중 영문본과 한글본이 다른 부분을 발견하여 차이점에 대해 적어 보았습니다.



사실은 한글 번역본을 보고 따라 하다가 이상하게 에러가 나길래 몇 시간 삽질해서 깨우친 내용을 적어봅니다.

2018년 2월 6일 화요일

Python 2.7 설치하기

개요

CentOS 6 에는 Python 2.6 이 기본으로 설치되어 있는데, Python 2.7 환경이 필요하여 CentOS 6 에 일반 사용자 계정으로 Python 2.7 을 설치하게 되었다.

파이썬 설치

Python 2.7.14

$ wget https://www.python.org/ftp/python/2.7.14/Python-2.7.14.tgz
$ tar zxvf Python-2.7.14.tgz
$ cd Python-2.7.14
$ ./configure --prefix=/home/liveegg/local/python2.7 --enable-shared
$ make
$ make install

환경설정

.bash_profile
PY27=/home/liveegg/local/python2.7
export PATH=${PY27}/bin:$PATH
export LD_LIBRARY_PATH=${PY27}/lib:$LD_LIBRARY_PATH

$ source ~/.bash_profile

파이썬 패키지 관리 도구 설치

setuptools 38.5.0

$ wget https://pypi.python.org/packages/1d/80/eb09090e89f658990ee8b92c41fd4f5b04b5a07ddac121b94874473c7171/setuptools-38.5.0.zip#md5=7cb6bbde7b8bcfd9ea834aef0de15289
$ unzip setuptools-38.5.0.zip
$ cd setuptools-38.5.0
$ python2.7 setup.py install

pip 9.0.1

$ wget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d63c9
$ tar zxvf pip-9.0.1.tar.gz
$ cd pip-9.0.1
$ python2.7 setup.py install