почему `tox` устанавливает пакеты в системный каталог Python в Windows? - PullRequest
0 голосов
/ 01 июня 2018

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

Вот самый простой пример, который я могу показать:

Mytox.ini это просто:

[tox]
envlist = py27

[testenv]
commands = pytest

deps =
    pytest

Тогда следующая серия команд показывает, что pytest не установлена, но в конце выполнения tox она устанавливается в системный путь к Python:

> which pytest
which: no pytest in (/cygdrive/c/Program Files (x86....

> tox
[... lots of output ...]

___________________________________ summary ___________________________________
  py27: commands succeeded
  congratulations :)

Затем

> which pytest
/cygdrive/c/Python27/Scripts/pytest

Кроме того, я вижу, что тестируемый пакет также установлен в системном каталоге python.

Разве tox не должен создавать виртуальную среду локально?Я вижу, что создается каталог .tox/py27, но он выглядит как установка в стиле Linux с каталогом bin вместо Scripts.Это ожидаемое поведение tox?

1 Ответ

0 голосов
/ 22 июня 2018

Похоже, вы оказались с Windows-родным Python в системной переменной PATH, которая вставляется каким-то образом даже до путей /bin Cygwin, поэтому tox находит и пытается запустить этот Python вместоCygwin's Python.В общем, вы не должны использовать Windows Python от Cygwin, если для этого нет особых причин.

Из комментариев вы упомянули, что у вас установлен TortoiseHG.Я не знаю точно, как TortoiseHG работает в Windows, но поскольку Mercurial написан на Python, TortoiseHG должен либо поставляться с интерпретатором Python, либо, по крайней мере, использовать любой интерпретатор Python, найденный в Windows (возможно, с помощью virtualenv), поэтому, если TortoiseHGесть запись PATH, убедитесь, что она все еще идет после вашего Cygwin {/,/usr/,/usr/local/}bin.

...