【问题标题】:pip canot find tensorflow when in virtualenv with specified python在具有特定 python 的 virtualenv 中 pip 找不到 tensorflow
【发布时间】:2019-04-29 12:06:27
【问题描述】:

我遇到了一个奇怪的问题,在 ubuntu 14.04 上,python2.7.9 安装在自定义文件夹中,当我尝试从使用自定义 python 构建 pip 的 virtualenv 内部安装 tensorflow 时似乎找不到 tensorflow。

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

收集张量流 找不到满足要求 tensorflow 的版本(来自版本:) 没有找到 tensorflow 的匹配分布

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

【问题讨论】:

  • 有这个reference。系统要求是Ubuntu 16.04 or later (64-bit)
  • 我不明白,如果是这个原因,为什么它在道德环境之外工作?
  • 如果我使用全局 python2.7.6,它也可以在 virtualenv 中工作
  • 你说得有道理。您是否尝试在 virtualenv 创建时使用此参数virtualenv --system-site-packages
  • 很可能是因为您的其他 Python 2.7.9 是使用不同的 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)" 打印什么?

标签: python tensorflow pip ubuntu-14.04


【解决方案1】:

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

/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

【讨论】:

    猜你喜欢
    • 2017-07-29
    • 1970-01-01
    • 2013-05-03
    • 2020-03-30
    • 2021-01-19
    • 1970-01-01
    • 2016-12-18
    • 2017-02-05
    • 2016-06-08
    相关资源
    最近更新 更多