Как активировать среду 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 и т. Д. Вместо использования активации?