在具有特定 python 的 virtualenv 中时,pip 找不到 tensorflow

pip canot find tensorflow when in virtualenv with specified python

我遇到了一个奇怪的问题,在 ubuntu 14.04 上 python2.7.9 安装在自定义文件夹中,当我尝试从使用自定义 python build pip 好像没有找到tensorflow

 virtualenv venv --python=/opt/python279/bin/python2.7
 cd venv
 source bin/activate
 pip install tensorflow

Collecting tensorflow Could not find a version that satisfies the requirement tensorflow (from versions: ) No matching distribution found for tensorflow

其他包安装正常:/我完全糊涂了

前段时间写了可能不匹配导致Could not find a version that satisfies requirement错误。虽然这个问题专门针对 MacOS,但答案也适用于 Linux。在你的情况下,你有一个 ABI 不匹配:正如在评论中发现的那样,

/opt/python279/bin/python2.7 -c "import sysconfig;\
    abiflags=('m' if sysconfig.get_config_var('WITH_PYMALLOC') else '')+\
    ('u' if sysconfig.get_config_var('WITH_WIDE_UNICODE') else '')+\
    ('d' if sysconfig.get_config_var('WITH_PYDEBUG') else ''); print(abiflags)" 

返回 m,表明此 Python 发行版是在没有广泛的 unicode 支持的情况下编译的(缺少 u 标志)。这意味着 pip 将只为这个 Python 发行版安装 cp27-cp27m-manylinux1_x86_64 个轮子。但是,Linux 上 Python 2.7 的唯一车轮 tensorflow offerscp27-cp27mu-manylinux1_x86_64。为了能够安装 tensorflow,您需要构建一个具有广泛 unicode 支持的 Python 2.7 发行版:

$ cd Python2.7-src
$ configure --enable-unicode=ucs4
$ make && make install