【问题标题】:Python - why would library version from pip freeze be different than when I actually run it?Python - 为什么 pip freeze 的库版本与我实际运行它时不同?
【发布时间】:2020-09-04 19:45:50
【问题描述】:

我正在使用 conda 和 pip 来管理我的包。

在我的 environment.yml 中,我有以下内容

  - LOTS OF PACKAGES
  - ...
  - ...
  - pip:
    - pyarrow==0.16.0

所以 pyarrow 应该是一个特定的版本 - 0.16。

我 conda 激活到那个环境。当我进行 pip freeze 或 pip show 时,版本同意。它应该是 0.16

(CONDA) $ pip show pyarrow
Name: pyarrow
Version: 0.16.0
Summary: Python library for Apache Arrow
Home-page: https://arrow.apache.org/
Author: None
Author-email: None
License: Apache License, Version 2.0
Location: /home/<USRER>/anaconda3/envs/CONDA/lib/python3.6/site-packages
Requires: numpy, six

但是当我启动 python,导入库并尝试获取版本时,它是一个不同的版本。

(CONDA) $ python   
Python 3.6.6 |Anaconda, Inc.| (default, Oct  9 2018, 12:34:16) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyarrow
>>> pyarrow.__version__
'0.12.0'
>>> pyarrow.__file__
'/home/<USER>/anaconda3/envs/CONDA/lib/python3.6/site-packages/pyarrow/__init__.py'

我不明白这怎么可能。我希望版本同意,但出于某种原因,python 坚持认为 pyarrow 是不同的版本。

现在我怀疑我的整个 conda 环境都很糟糕。我在 python 中获得的版本不应该同意 pip freeze 吗?

【问题讨论】:

  • 使用pip在env中单独安装pyarrow包,而不是通过yml文件安装,还会出现这种情况吗?
  • 是的,我在我的 conda 环境中手动进行了 pip 安装,当我实际运行 python 时它仍然具有旧版本。
  • pyarrow 是 conda 列表的一部分,在 yml 文件中还是仅在 pip 列表中?
  • @sinoroc 应该是,因为pip show 包含正确的位置。
  • @user3240688 一定要通过pip安装pyarrow吗?它不完全是当前问题的解决方案,但它似乎可以作为 Conda 包提供 (link)。

标签: python pip anaconda conda


【解决方案1】:

pyarrow 用__version__ 变量做了一些funny stuff。它is generated 使用setuptools-scm

因此,您安装的 conda 版本可能由于某种原因而损坏。也许尝试通过克隆它并使用克隆文件夹中的pip 安装它而不通过conda 手动安装它,看看你是否得到不同的结果。

我相信您可以通过运行自动执行此操作:

pip install "git+https://github.com/apache/arrow@apache-arrow-0.16.0#egg=pyarrow&subdirectory=python"

【讨论】:

    猜你喜欢
    • 2019-12-17
    • 2020-03-08
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 2021-02-24
    • 2018-06-22
    • 1970-01-01
    • 2015-02-26
    相关资源
    最近更新 更多