一般的な
一方、Python2
なお
Contents
実行環境(前回までのまとめ)
OSMSYS2_ROOT |-- dev |-- etc |-- home |-- mingw64 | |-- bin | |-- opt |-- tmp |-- usr | |-- bin | |-- var
MSYS2
> set HOME=/home# 個人的なもの. Winのユーザ名を使わないため > set MSYSTEM=MINGW64 > usr\bin\bash --login -i# -i なくても同じ $ pacman -S mingw-w64-x86_64-toolchain# この中にPython2あり $ pacman -S make $ pacman -S mingw-w64-x86_64-libxml2
PostgreSQL 9.5.3
$ cdPOSTGRES_SOURCE $ ./configure --enable-nls --host=x86_64-w64-mingw32 --with-libxml $ make $ make install $ cd contrib $ make $ make install
結果こんな風に ↓ インストールされます。
MSYS2_ROOT |-- usr |-- local |-- pgsql |-- bin |-- include |-- lib |-- share
pgsql
libintl-8.dll libiconv-2.dll libxml2-2.dll zlib1.dll
以上が前々回(本体まで)と前回(contrib)の経過。この開発・実行環境を用いて、次項から
ビルド前の準備(1)pexports.exe
PostgreSQL$ make distclean $ ./configure --enable-nls --host=x86_64-w64-mingw32 --with-libxml --with-python $ cd src/backend $ make
次に
$ cd src/pl/plpython $ make ... pexports C:/Windows/system32/python27.dll > python27.def /bin/sh: pexports: command not found Makefile:57: recipe for target 'python27.def' failed make: *** [python27.def] Error 127 make: *** Deleting file 'python27.def'
pexports
$ cdPEXPORTS_SOURCE $ ./configure $ make $ make install $ pexports -v # check result
ビルド前の準備(2)python27.dll
MSYS2$ cdPYTHON-2.7.11-SOURCE $ ./configure $ make gcc -c -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-protot ypes -I. -IInclude -I./Include -DPy_BUILD_CORE -o Modules/python.o ./Modules/ python.c In file included from Include/Python.h:58:0, from ./Modules/python.c:3: Include/pyport.h:207:5: error: #error "Python doesn't support sizeof(pid_t) > si zeof(long)" # error "Python doesn't support sizeof(pid_t) > sizeof(long)" ^ Makefile:645: recipe for target 'Modules/python.o' failed make: *** [Modules/python.o] Error 1
調べても解決の糸口がないので、6
(download: //www.python.org/downloads/ -> Python 2.7.11 -> python-2.7.11.amd64.msi) > start /wait msiexec /a python-2.7.11.amd64.msi targetdir="展開先(絶対パス)" /qn > copy 展開先/python27.dll c:\windows\system32
MSI
今回はしませんでしたが、PL/Python
... # Python on win32 ships with import libraries only for Microsoft Visual C++, # which are not compatible with mingw gcc. Therefore we need to build a # new import library to link with. ifeq ($(PORTNAME), win32) pytverstr=$(subst .,,${python_version}) PYTHONDLL=$(subst \,/,$(WINDIR))/system32/python${pytverstr}.dll ...
ビルド、ポータブル版 PostgreSQL へインストール
↓ こんどは$ cdPOSTGRES_SOURCE /src/pl/plpython $ make $ make install
もう
make install
このファイル群を、前回までのポータブル版
pgsql |-- bin |-- data |-- include |-- lib | |-- plpython2.dll |-- share |-- extension |-- plpython2u.control |-- plpython2u--1.0.sql +-- plpython2u--unpackaged--1.0.sql
続いて
pgsql |-- bin |-- data |-- include |-- lib |-- python27 |-- python27.dll |-- python.exe +-- lib<== mingw64/lib/python2.7/* |-- share
以上でインストール終了。次で動作確認します。
環境変数を設定してサーバ起動、動作確認
PostgreSQL> cdPG_BINDIR > set PATH=../python27 > set PYTHONPATH=../python27/lib
bin
> python Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:40:30) [MSC v.1500 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
続いてサーバをアドホックに(サービスでなく)起動。pg_ctl
> pg_ctl -D ../data start
クライアントは何でもよく、今回は同じ
> psql -U postgres # create database plpy2; # \c plpy2 # create extension plpython2u; CREATE EXTENSION
↓ とりあえず無名コードブロックでテスト。print
# do language plpython2u $$ plpy.info(1); $$; INFO: 1 CONTEXT: PL/Python anonymous code block DO
↓
# do language plpython2u $$ import sys plpy.info(sys.version_info) $$; do language plpython2u $$ import sys plpy.info(sys.platform) $$;
今回