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^)/
[ツッコミを入れる]