从源代码构建tensorflow-1.8,没有名为numpy的模块

时间:2018-07-08 09:11:51

标签: python numpy tensorflow

我正在从源代码构建用于NixOS的Tensorflow,面临以下问题:

Traceback (most recent call last): File "/home/grwlf/tmp/out/execroot/org_tensorflow/bazel-out/host/bin/tensorflow/tools/api/generator/create_python_api.runfiles/org_tensorflow/tensorflow/tools/api/generator/create_python_api.py", line 26, in <module> from tensorflow.python.util import tf_decorator File "/home/grwlf/tmp/out/execroot/org_tensorflow/bazel-out/host/bin/tensorflow/tools/api/generator/create_python_api.runfiles/org_tensorflow/tensorflow/python/__init__.py", line 47, in <module> import numpy as np ModuleNotFoundError: No module named 'numpy'

此错误是由于执行以下bazel操作导致的:

(cd /home/grwlf/tmp/out/execroot/org_tensorflow && \ exec env - \ LD_LIBRARY_PATH=/run/opengl-driver/lib:/run/opengl-driver-32/lib \ PATH=... \ PYTHON_BIN_PATH=/nix/store/zrbzl421n5lsm84b6drwn08i10wwjbvj-python3-3.6.5-env/bin/python \ PYTHON_LIB_PATH=/nix/store/zrbzl421n5lsm84b6drwn08i10wwjbvj-python3-3.6.5-env/lib/python3.6/site-packages \ TF_DOWNLOAD_CLANG=0 \ TF_NEED_CUDA=0 \ TF_NEED_OPENCL_SYCL=0 \ /nix/store/f2vw9r78fhaq15rcyvllzz2ayafd5n0z-bash/bin/bash -c ' source external/bazel_tools/tools/genrule/genrule-setup.sh; bazel-out/host/bin/tensorflow/tools/api/generator/create_python_api bazel-out/k8-py3-opt/genfiles/tensorflow/tools/api/generator/api/__init__.py < lots of TF python files here >'

(注意,PYTHON_BIN_PATH / PYTHON_LIB_PATH变量包含安装了numpy软件包的python 3.6环境的路径)

目前,我还不清楚numpy的预期来源。 TF应该已经拥有自己的numpy版本,还是必须提供它的构建环境?如果是这样,应该由bazel进行环境清理吗?

2 个答案:

答案 0 :(得分:0)

启动/nix/store/zrbzl421n5lsm84b6drwn08i10wwjbvj-python3-3.6.5-env/bin/python时,应检查一下 没有参数,您可以使用import numpy:

Python 3.6.6 (default, Jun 27 2018, 05:47:41)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy

通常,您会nix-shell来获得适当的构建环境

$ nix-shell -p python3Packages.numpy
these paths will be fetched (3.15 MiB download, 19.35 MiB unpacked):
  /nix/store/kv39m0n4sg8xar0kg1q4nnskgdr5jvl7-python2.7-numpy-1.14.5
copying path '/nix/store/kv39m0n4sg8xar0kg1q4nnskgdr5jvl7-python2.7-numpy-1.14.5' from 'https://cache.nixos.org'...
$ echo $PYTHONPATH | grep numpy
/nix/store/kv39m0n4sg8xar0kg1q4nnskgdr5jvl7-python2.7-numpy-1.14.5/lib/python2.7/site-packages:/nix/store/7sbvn0wgv7hsnxpss1jba723kx5nz6d4-python-2.7.15/lib/python2.7/site-packages:/nix/store/dlc0139ilc4md16hckh2vg9170dhp6li-python2.7-setuptools-40.0.0/lib/python2.7/site-packages:/nix/store/kv39m0n4sg8xar0kg1q4nnskgdr5jvl7-python2.7-numpy-1.14.5/lib/python2.7/site-packages:/nix/store/7sbvn0wgv7hsnxpss1jba723kx5nz6d4-python-2.7.15/lib/python2.7/site-packages:/nix/store/dlc0139ilc4md16hckh2vg9170dhp6li-python2.7-setuptools-40.0.0/lib/python2.7/site-packages

您还可以创建default.nixshell.nix作为nix-shell的源代码,以保持这一点。我为我的所有项目都这样做: https://github.com/Mic92/dotfiles/tree/master/nixos/environments

也可以导入nixpkgs用于构建张量流的构建环境:nix-shell '<nixpkgs>' -A python3Packages.tensorflow。 在nixpkgs中,我们使用setup.py而不是bazel来构建张量流。

答案 1 :(得分:0)

构建TensorFlow的pre-requisite是使用pip安装numpy,wheel和keras_preprocessing。 TensorFlow取决于您的环境是否具有这些。

pip install -U --user pip numpy wheel
pip install -U --user keras_preprocessing --no-deps