2016-06-30 2 views
5

Я использую tox для управления некоторыми средами тестирования. У меня есть зависимость (backports.ssl-match-hostname), которую я не могу загрузить с использованием последней версии пипса, поэтому мне нужно вернуться к пункту 8.0.3, чтобы позволить установке работать.Tox устанавливает неправильную версию pip в ее виртуальную env

Я включил версию кода 8.0.3 внутри моего файла tox.ini для зависимостей.

deps= 
    pip==8.0.3 

Однако, когда я бегу

source .tox/py27/bin/activate 

и ввести виртуальную среду тестирования, а затем запустить

pip --version 

Я заканчиваю с

8.1.2 

Однако, за пределами моей токсической среды, когда я выполните ту же команду, я получаю

8.0.3 

Есть ли что-нибудь особенное, что ток делает при захвате пипса? Почему я не могу указать версию пипса, которую я хочу использовать в качестве зависимости?

EDIT: для этого мне кажется, что я могу захватить зависимость pip == 8.0.3, но для других зависимостей они все еще работают из команды, запущенной с помощью pip == 8.1.2

Итак, мне нужно сначала захватить pip == 8.0.3, а затем установить его, захватить все остальное. Все еще не уверены, почему ток начинается с pip == 8.1.2

ответ

3

Это, по-видимому, было результатом пакета «virtualenvs» python, содержащего предварительно выбранную группу пакетов python, на которую он ссылается, одна из которых была последней и наибольший пип.

Я не знаю, если это предпочтительный способ сделать это, но я нашел успех, запустив

pip uninstall virtualenv 

А затем переустановить с версией, которая работала

pip install virtualenv==15.0.1 

С " правильной "версии virtualenv на месте, я смог выполнить свою команду по токсичности

source .tox/py27/bin/activate 

и посмотреть de хряков версия пип

pip --version 
pip 8.0.3 
+1

Я нашел, что важно удалить существующий virtualenv, потому что pip поставляется в пакете virtualenv_support, который не обновляется обновлением virtualenv –

1

Обойти это здесь: https://github.com/pypa/pip/issues/3666

Хотя, чтобы сделать его работу я должен был написать «пункт установить пип == 8.1.1» в моем сценарии. Таким образом, чтобы резюмировать:

Добавить pip.sh скрипт в проект:

#!/bin/bash 
pip install pip==8.1.1 
pip install "[email protected]" 

добавить на Tox.ini:

install_command = {toxinidir}/pip.sh {opts} {packages} 
0

Я недавно столкнулся с этой проблемой. У меня это было какое-то время, но он просто не регистрировался, потому что у меня были такие случайные сбои с кодом Python 2/3. Другой способ, которым это может случиться, - это, как и я, изменить виртуальный интерфейс между различными версиями Python и не очищать.

Проверьте /bin или /Scripts, чтобы узнать, python2 указывает на python. Если virtualenv - это Python 3, то это будет означать, что python2 фактически вызывает Python 3. И наоборот, если вы virtualenv - это Python 2, и вы хотите протестировать код Python 3.

+0

Спасибо, что ответили. Я честно не помню этого, это было так долго. – Zack

Смежные вопросы