@ru_python

Страница 3111 из 9768
Makc
05.07.2017
15:19:45
насколько я знаю pip не позваоляет ставить отдельно зависимости из tests_require

Nikolay
05.07.2017
15:19:49
ну так не надо их в разных местах держать

насколько я знаю pip не позваоляет ставить отдельно зависимости из tests_require
не уверен насчет этого, но в продакшен-коде такие вещи решаются созданием двух txt-файлов

Makc
05.07.2017
15:20:14
ну, из setup.cfg он их не зачитает

Google
Nikolay
05.07.2017
15:20:19
requirements.txt и test-requirements.txt

Makc
05.07.2017
15:21:33
Ну да, и тогда в место того чтобы иметь папку .eggs где закешированные яйца просто лежат эти пакеты прилетят мне в систему\venv

Makc
05.07.2017
15:22:34
что именно из того что я сказал, вдруг?

Nikolay
05.07.2017
15:22:45
pip install -e же

аналог python setup.py develop

или я тебя неправильно понял?

Makc
05.07.2017
15:23:09
а как -e ставит зависимости?

Nikolay
05.07.2017
15:23:39
Makc
05.07.2017
15:23:40
да, в место копии в site-packages у тебя будет просто симлинк

Nikolay
05.07.2017
15:23:45
я вообще не очень вижу проблему

Makc
05.07.2017
15:23:48
но все зависимости прилетят как обычно

Nikolay
05.07.2017
15:23:48
смотри

Google
Nikolay
05.07.2017
15:23:53
у тебя есть tox, допустим

ты запускаешь тесты

создается virtualenv, в него прилетают пакеты, тесты прогоняются, venv удаляется

Makc
05.07.2017
15:24:14
в отличае от setup.py test

Nikolay
05.07.2017
15:24:14
или не удаляется

в чем проблема?

Makc
05.07.2017
15:24:50
Ну ты понимаешь насколько ты мне более сложный путь предлагаешь?

Nikolay
05.07.2017
15:25:16
я тебе предлагаю дефолтный путь, как это обычно делается при тестировании продакшен-кода

ну не работает артифактори с easy_install пока, видимо

бери токс, он умеет пипом ставить пакеты, насколько я помню

Makc
05.07.2017
15:25:58
Дело не в артефактори, это уже филосовская беседа)

Nikolay
05.07.2017
15:26:33
я просто не вижу проблемы в том, что пакеты прилетают в венв :)

более того, для нормального тестирования лучше бы они туда и прилетали, почему нет

Makc
05.07.2017
15:27:24
Чтобы сосздать venv тебе нужно скопировать большую часть интерпритатора, с библиотеками

Зачем, когда он у тебя уже и так есть.

Nikolay
05.07.2017
15:27:32
нет

мне не надо ничего копировать никуда

venv - это маленький скрипт, который поверх интерпретатора подменяет пару переменных окружения, все

более того, по дефолту он даже симлинки на системные пакеты не создает, и это офигенно

Google
Nikolay
05.07.2017
15:28:50
хорошо, что исправили, ибо раньше создавал

Makc
05.07.2017
15:29:58
36K test_venv/bin 9.9M test_venv/lib 4.0K test_venv/include 10M test_venv

Makc
05.07.2017
15:30:41
10mb

Nikolay
05.07.2017
15:30:44
10М - это много?

Makc
05.07.2017
15:30:53
Смотря где

Nikolay
05.07.2017
15:31:07
где угодно, ты же тесты не на ардуино гоняешь

Makc
05.07.2017
15:31:42
И смотря как часто это создаётся удаляется.

Было дело и на arm железках гонялись

Nikolay
05.07.2017
15:32:14
И смотря как часто это создаётся удаляется.
да хоть сколь угодно часто, Макс, это 10 мегабайт, которые создаются за секунду

Makc
05.07.2017
15:32:54
В целом просто транный подход

Nikolay
05.07.2017
15:32:58
я бы даже пошел дальше и сказал, что в современном мире нельзя запускать продакшен-код или тесты НЕ в виртуаленве

Makc
05.07.2017
15:33:09
Хотите создать дистрибутив, берите setuptuls

Nikolay
05.07.2017
15:33:14
(ну только за исключением случаев, если это докер или виртуалка)

Makc
05.07.2017
15:33:16
хотите зависимости ещ прописать

прикрутите сбоку pip

Nikolay
05.07.2017
15:33:36
pip идет в комплекте с виртуаленвом

его не надо прикручивать

Makc
05.07.2017
15:33:51
в проект

Nikolay
05.07.2017
15:33:59
что в проект?

Google
Makc
05.07.2017
15:34:05
В скрипты, котоыре дистрибуцию создают

тоесть вместо простого python setup.py test

Nikolay
05.07.2017
15:34:26
питонопакет создает python setup.py bdist_wheel, если ты об этом

Makc
05.07.2017
15:34:46
тебе надо создать вируаленв, в нём пошаманить с зависимостями и там уже запустить твой код

Makc
05.07.2017
15:35:18
Ну он просто скрывает это всё от глаз)

Admin
ERROR: S client not available

Makc
05.07.2017
15:35:38
Выглядит как набор костылей (:

Nikolay
05.07.2017
15:35:44
ээ

нет

Makc
05.07.2017
15:35:46
который в обёртку завернули

Nikolay
05.07.2017
15:36:01
ты странно рассуждаешь

Makc
05.07.2017
15:36:10
возможно)

Nikolay
05.07.2017
15:36:14
чтобы прогнать тесты - тебе так или иначе надо изолированное окружение, так?

без вариантов

с зависимостями всеми в этом окружении

в питоне такая задача решается с помощью virtualenv

Google
Makc
05.07.2017
15:36:40
оно может быть уже изолировано

Nikolay
05.07.2017
15:36:41
что логично

Makc
05.07.2017
15:36:43
в том же CI

Nikolay
05.07.2017
15:36:58
оно может быть уже изолировано
может, если это докер или отдельная виртуалка, я выше написал же

Makc
05.07.2017
15:37:10
Ну в моём случае так и есть

Nikolay
05.07.2017
15:37:22
но тогда тем более не должно быть проблем вызвать там pip install для зависимостей и запустить тесты

Dk
05.07.2017
15:37:39
отлично
Если два авейта встали, а третий отдаёт управления, то подхватит тот, что первый остановился?

Nikolay
05.07.2017
15:38:22
Если два авейта встали, а третий отдаёт управления, то подхватит тот, что первый остановился?
await передает управление обратно в луп до тех пор, пока то, что находится под ним, не вернет результат

в это время другие корутины могут спокойно выполняться

когда событие выполнится (результат вернется) - луп это увидит и управление на очередном await в другой корутине вернется обратно в эту

Makc
05.07.2017
15:41:05
Ну и к слову, корутину можно без лупа запустить)

Dk
05.07.2017
15:41:27
Я так и спросил. У двух авейтов есть результат, кому из них первому дадут управление?

Nikolay
05.07.2017
15:41:51
Ну и к слову, корутину можно без лупа запустить)
нет, нельзя :) можно сэмулировать луп самому

но это довольно бессмысленно

Makc
05.07.2017
15:42:17
>>> async def f(): 2 return 42 >>> f().send(None) Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration: 42 42

Nikolay
05.07.2017
15:42:42
Я так и спросил. У двух авейтов есть результат, кому из них первому дадут управление?
предположу, что результат пришел не одновременно все равно

какой раньше пришел - тому и дадут, предполагаю

Dk
05.07.2017
15:43:34
>>> async def f(): 2 return 42 >>> f().send(None) Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration: 42 42
Я это наложил на фор и пробовал собрать асинхронный клиент

И сервер также собрал

Ну так, для тестов

Makc
05.07.2017
15:44:28
Дописал там ^

Страница 3111 из 9768