#python #pip #anaconda #conda
#python #pip #anaconda #conda
Вопрос:
Я использую conda и pip для управления своими пакетами.
В моем environment.yml у меня есть следующее
- LOTS OF PACKAGES
- ...
- ...
- pip:
- pyarrow==0.16.0
Итак, pyarrow должна быть определенной версией — 0.16.
Я должен активировать в этой среде. И когда я выполняю 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?
Комментарии:
1. Это все еще происходит, если вы устанавливаете пакет pyarrow отдельно в env с помощью pip вместо установки через файл yml?
2. да, я вручную установил pip в своей среде conda, и у нее все еще есть старая версия, когда я действительно запускаю python.
3. Является ли pyarrow частью списка conda также в файле yml или только в списке pip?
4. @sinoroc Это должно быть, так как
pip show
включает правильное местоположение.5. @user3240688 Вам нужно устанавливать pyarrow через pip? Это не совсем решение текущей проблемы, но, похоже, оно доступно в виде пакета Conda ( ссылка ).
Ответ №1:
pyarrow делает некоторые забавные вещи с __version__
переменной. Она генерируется с помощью setuptools-scm.
Так что, возможно, установленная вами версия conda по какой-то причине сломана. Возможно, попробуйте установить ее вручную, клонировав ее и установив с помощью pip
из клонированной папки, не проходя через conda
, и посмотрите, получите ли вы другой результат.
Я верю, что вы можете сделать это автоматически, запустив:
pip install "git https://github.com/apache/arrow@apache-arrow-0.16.0#egg=pyarrowamp;subdirectory=python"