3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

sudoなしでUbuntuにPython3.7インストール

Last updated at Posted at 2022-03-11

管理者権限がない環境でPython3.7(+jupyter)をインストールするのに意外と苦労したので、自分用にメモを残しておきます。OSはUbuntu18.04LSです。
(2022/6/8 ミスがあったので更新した)

$HOME/local/python/にインストールすると仮定しています。まず、次のようにPythonのソースをwgetしてインストールすると失敗しました。

失敗例1

mkdir -p $HOME/local/python
wget http://www.python.org/ftp/python/3.7.16/Python-3.7.16.tgz
tar -zxvf Python-3.7.16.tar.gz
cd Python-3.7.16
./configure --prefix=$HOME/local/python --enable-optimizations
make -j 10
make altinstall

ModuleNotFoundError: No module named '_ctypes'
というエラーが出ました。どうやらlibffiというものが必要らしいです。

失敗例2

libffiもwgetでインストールしてきます。

mkdir -p $HOME/local/libffi/3_2_1
wget ftp://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz
tar xvfz libffi-3.2.1.tar.gz
./configure --prefix=$HOME/local/libffi/3_2_1/
make -j 10
make install 
mkdir ~/local/include
ln -s $HOME/local/libffi/3_2_1/lib/libffi-3.2.1/include/ffi.h $HOME/local/include/
ln -s $HOME/local/libffi/3_2_1/lib/libffi-3.2.1/include/ffitarget.h $HOME/local/include/

mkdir ~/local/lib
ln -s $HOME/local/libffi/3_2_1/lib/libffi.a $HOME/local/lib/
ln -s $HOME/local/libffi/3_2_1/lib/libffi.la $HOME/local/lib/
ln -s $HOME/local/libffi/3_2_1/lib/libffi.so $HOME/local/lib/
ln -s $HOME/local/libffi/3_2_1/lib/libffi.so.6 $HOME/local/lib/

mkdir ~/local/lib/pkgconfig/
ln -s $HOME/local/libffi/3_2_1/lib/pkgconfig/libffi.pc $HOME/local/lib/pkgconfig/
cd $HOME/Python-3.7.16
./configure --prefix=$HOME/local/python/ LDFLAGS="-L $HOME/local/lib/" CPPFLAGS="-I $HOME/local/include/" --with-system-ffi --enable-optimizations
make -j 10
make altinstall

Python自体のインストールはこれで成功しましたが、jupyterをインストールするときに
ModuleNotFoundError: No module named '_sqlite3'
というエラーが出てしまいました。これも先にインストールしておく必要があるようです。

成功例

以下のコマンドを全て順番に実行したら上手くいきました。前述のlibffiやsqliteのインストールも含まれています。

cd
mkdir -p $HOME/local/libffi/3_2_1/
wget ftp://sourceware.org/pub/libffi/libffi-3.2.1.tar.gz
tar xvfz libffi-3.2.1.tar.gz
cd libffi-3.2.1
./configure --prefix=$HOME/local/libffi/3_2_1/
make -j 10
make install
cd
mkdir -p $HOME/local/include
ln -s $HOME/local/libffi/3_2_1/lib/libffi-3.2.1/include/ffi.h $HOME/local/include/
ln -s $HOME/local/libffi/3_2_1/lib/libffi-3.2.1/include/ffitarget.h $HOME/local/include/

mkdir -p $HOME/local/lib
ln -s $HOME/local/libffi/3_2_1/lib/libffi.a $HOME/local/lib/
ln -s $HOME/local/libffi/3_2_1/lib/libffi.la $HOME/local/lib/
ln -s $HOME/local/libffi/3_2_1/lib/libffi.so $HOME/local/lib/
ln -s $HOME/local/libffi/3_2_1/lib/libffi.so.6 $HOME/local/lib/

mkdir -p $HOME/local/lib/pkgconfig/
ln -s $HOME/local/libffi/3_2_1/lib/pkgconfig/libffi.pc $HOME/local/lib/pkgconfig/
cd
mkdir -p $HOME/local/sqlite
wget http://www.sqlite.org/sqlite-autoconf-3071501.tar.gz
tar xzvf sqlite-autoconf-3071501.tar.gz
cd sqlite-autoconf-3071501
./configure --prefix=$HOME/local/sqlite
make -j 10
make install
cd
mkdir -p $HOME/local/python
wget http://www.python.org/ftp/python/3.7.16/Python-3.7.16.tgz
tar -zxvf Python-3.7.16.tgz
cd Python-3.7.16
./configure --prefix=$HOME/local/python/ LDFLAGS="-L $HOME/local/lib/ -L $HOME/local/sqlite/lib/" CPPFLAGS="-I $HOME/local/sqlite/include/ -I $HOME/local/include/" --enable-loadable-sqlite-extensions --with-system-ffi --enable-optimizations
make -j 10
make altinstall

これでPythonのインストールは完了です。最後にpipをアップグレードしてjupyterをインストールします。

cd $HOME/local/python/bin
pip3.7 install --upgrade pip
pip3.7 install jupyter
jupyter notebook
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?