在Debian7中建立python3.4的工作環境

在Debian7中建立python3.4的工作環境

====================================

源由:

目前手上有一個工作環境是安裝ARM Debian 7 (wesley), 而其內建Python 是3.2 版. 這版 Python 並沒有內建 pyvenv 程式. 這功能是python 3.3 以後才提供. 所以我只好自己編譯新的python 來使用. 我採用較普遍的python 3.4.4 版來使用.

所需套件

# apt-get install gcc g++ make

若要順便編譯pip 及 easy_install 的話, 就需要用apt 裝下列套件

# apt-get install python3-pip python3-setuptools

若還要編譯完整的Python modules, 那還需要下列套件

# apt-get install libreadline6 libreadline6-dev libsqlite3-dev libbz2-dev  libncursesw5-dev tk-dev libgdbm-dev liblzma-dev

流程

下載python 3.4 source code

$ mkdir -p $HOME/arm_py3.4/src
$ cd $HOME/arm_py3.4/src
$ wget https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tgz
$ tar -zxvf Python-3.4.4.tgz

編譯及指定安裝目錄

cd $HOME/arm_py3.4/src/Python-3.4.4
./configure --prefix=$HOME/arm_py3.4/bin/py3.4
make && make install

做完上述步驟, 新的python3.4.4 被安裝在$HOME/arm_py3.4/bin/py3.4, 因此需要設定PATH來使用它.

$ export PATH=$HOME/arm_py3.4/bin/py3.4/bin:$PATH

上面的PATH 可以自行加入.bashrc中, 以方便登入就可以使用.

使用 Python virtual environments

建立Python venv

$ cd $HOME/arm_py3.4
$ pyvenv-3.4 pyvenv

建好之後, 以後只要行如下指令就可以進入 Python virtual environment

$ source $HOME/arm_py3.4/pyvenv/bin/activate
$(pyvenv)

這時候提示符號會變成$(pyvenv), 表示已經在 Python virtual environment 下了. 然後就可以高興的使用pip, 或easy_install 等工具來安裝自己喜歡的套件而且完全獨立.
所安裝的任何套件都被放在$HOME/arm_py3.4/pyvenv/ 裡面, 若不想用, 直接砍掉此目錄就好了, 乾乾淨淨, 不影響系統的任何東西.

若要離開virtual environment 只要執行deactivate 指令就可以離開 Python virtual environment

$(pyvenv) deactivate
$

採用shared library 方式來編譯

若要使用shared library 方式來編譯python, 則需要在編譯時加入--enable-shared參數, 如下

cd $HOME/arm_py3.4/src/Python-3.4.4
./configure --prefix=$HOME/arm_py3.4/bin/py3.4 --enable-shared
make && make install

當編譯好之後, 除了要指定PATH 外, 還要讓系統能夠找到Library 的路徑. 方式有兩種, 其一是使用ldconfig

# echo $HOME/arm_py3.4/src/Python-3.4.4/lib > /etc/ld.so.conf.d/python3.4.4.conf
# ldconfig

其二是使用LD_LIBRARY_PATH 環境變數

$ export LD_LIBRARY_PATH=$HOME/arm_py3.4/src/Python-3.4.4/bib:$LD_LIBRARY_PATH

參考

  1. ldconfig用法與說明
This entry was posted in embedded system, Linux, 程式設計. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *