Как активировать среду conda в сборке jenkins

Мне нужно запустить сборку jenkins, используя специальную среду conda на нашем сервере jenkins (работающем в Windows). Я думал, что это будет так же просто, как бежать:

activate myenv
python test_env.py

но, похоже, это приводит к тому, что сборка завершается еще до запуска сценария. Вот журнал консоли jenkins:

activate myenv
Activating environment "myenv"...
Finished: SUCCESS

Если я удаляю строку активации, скрипт python выполняется нормально.

К вашему сведению, скрипт, который я запускаю:

import os

f = open('env.txt','w')

for k, v in os.environ.iteritems():
    print k, v
    f.write('%s\t%s\n' % (k,v))
f.close()

Кто-нибудь знает, что происходит? Должен ли я вместо этого напрямую вызывать соответствующий исполняемый файл python?

3 ответа

Решение

Использование call activate myenv предотвратить активацию от завершения текущей оболочки, когда она закончена. См. https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/call.mspx?mfr=true.

Брэдли привел меня в правильном направлении, и я нашел решение...

Мне был нужен Windows-эквивалент для "исходного" Unix, и "call" выполняет свою работу, как подробно описано в этом другом ответе.

пакетный эквивалент "источника" в Windows: как запустить скрипт Python из virtualenv

Я надеюсь, что кто-то найдет это полезным в будущем!

Я думаю, что скрипт активации в Windows запускает новый подоболочек, что означает, что текущая оболочка существует немедленно. Можете ли вы попробовать вручную установить переменные ENV, такие как PATH и т. Д. Вместо использования активации?

Другие вопросы по тегам