トップ «前の日記(2017/08/22) 最新 次の日記(2017/08/24)» 編集

kaztomo日記


2017/08/23

_ [FreeBSD][Python]FreeBSD-10.3R + Python3.5 + numpy

pkg の latestであっても py27-numpy は有れど、py35 向けには用意されていない。 そのため今までは numpy が使いたかったら python2.7 で。python3 の勉強をしたかったら numpy 使わないようにしてきた。

でも、python3 + numpy 使いたいよなぁと思い、 それなら自前で ports から make してみようとやってみたら敢え無くエラー (>_<)

# make PYTHON_VERSION=3.5
# make PYTHON_VERSION=3.5 install
...(snip)...
===>   Registering installation for py35-numpy-1.13.1_1,1
pkg-static: Unable to access file /usr/ports/math/py-numpy/work/stage/usr/local/lib/python3.5/site-
packages/numpy/__pycache__/__config__.opt-1.cpython-35.pyc:No such file or directory
pkg-static: Unable to access file /usr/ports/math/py-numpy/work/stage/usr/local/lib/python3.5/site-
packages/numpy/__pycache__/__init__.opt-1.cpython-35.pyc:No such file or directory
...(snip)...

と、大量の "No such file" エラー (+_+)

  • .pyc ファイルが出来ていないのかと find してみたら、ファイル名の一部にある "opt-1" の位置が違うじゃないの (@_@;;

色々とググってみると、どうやら

NG: version.opt-1.cpython-35.pyc
OK: version.cpython-35.opt-1.pyc

のようだ。

更にググってみると FreeBSD Bugzillaに報告 が上がっていた。

その報告の通り /usr/ports/Mk/Uses/python.mk を書き換えた。

--- /usr/ports/Mk/Uses/python.mk.org
+++ /usr/ports/Mk/Uses/python.mk
@@ -549 +549,3 @@
-               /\.py[co]$$/ && !($$0 ~ "/" pc "/") {id = match($$0, /\/[^\/]+\.py[co]$$/); if (id != 0) {d = substr($$0, 1, RSTART - 1); dirs[d] = 1}; sub(/\.pyc$$/,  "." mt "&"); sub(/\.pyo$$/, "." mt "." pyo); sub(/[^\/]+\.py[co]$$/, pc "/&"); print; next} \
+               /\.py[co]$$/ && !($$0 ~ "/" pc "/") {id = match($$0, /\/[^\/]+\.py[co]$$/); if (id != 0) {d = substr($$0, 1, RSTART - 1); dirs[d] = 1}; od = match($$0, /opt-1/);\
+               if ( od != 0 ) sub(/\.opt-1\./, "." mt "&"); else \
+               sub(/\.pyc$$/,  "." mt "&");  sub(/[^\/]+\.py[co]$$/, pc "/&"); print; next} \

再度 make し直したところ、無事 py35-numpy-1.13.1 がインストール出来た \(^o^)/