Попытка запустить код python на jenkins в Ubuntu - PullRequest
0 голосов
/ 03 марта 2020

все.

Недавно я начал работать с Jenkins, пытаясь заменить cronjob конвейером Jenkins. Я действительно немного знаю программирование на жаргоне. Я узнал, что я узнал из вопросов о stackoverflow. Итак, если вам, ребята, нужна дополнительная информация, я был бы очень признателен, если бы вы использовали простой Engli sh.

Итак, я установил последнюю версию Jenkins и предложил плагины плюс все плагины, которые я мог бы найти полезными до python работает.

Впоследствии я искал stackoverflow и другие веб-сайты, чтобы выполнить эту работу, но все, что я мог сделать, это

#!/usr/bin/env python

from __future__ import print_function

print('Hello World')

И это удалось.

В настоящее время Jenkins работает на Ubuntu 16.04, и я использую anaconda3 python (~ / anaconda3 / bin / python).

Когда я пытался запустить немного более сложный код python (я имею в виду импорт * 1036) *), это дает мне ошибку импорта.

Я пробовал до сих пор:

  1. выполнить python сборка сценария: импорт pandas - ошибка импорта
  2. выполнить сборку оболочки: импорт pandas (импорт pandas добавлен к коду, который работал выше)
  3. python сборка сборки: импорт pandas - недопустимая ошибка интерпретатора
  4. конвейерное задание : sh python /path_to_python_file/*.py - ошибка импорта

Все выдал ошибки. Поскольку работает «Hello World», я считаю, что использование python в anaconda3 не является проблемой. Кроме того, он импортировал функцию print_function просто отлично, поэтому я хочу знать, что мне следует делать отсюда. Изменить настройки рабочего пространства? настройка рабочего каталога? изменения кода?

Спасибо.

1 Ответ

1 голос
/ 03 марта 2020

Поскольку работает «hello world», я считаю, что использование anaconda3 python не является проблемой.

Ваше предположение неверно.

Существует несколько способов решения проблемы, но все они сводятся к использованию правильного интерпретатора python с установленным pandas. Обычно в Ubuntu у вас есть как минимум два переводчика. Один для python 2 и один для python 3, и вы будете использовать их в оболочке, вызывая либо python pth/to/myScript.py, либо python3 pth/to/myScript.py. python и python3 являются в данном случае просто своего рода метками , которые указывают на правильные исполняемые файлы, используя переменную окружения PATH.

Устанавливая anaconda3, вы добавляете еще одну интерпретатор с pandas и множеством других предустановленных пакетов. Если вы хотите использовать его, вам нужно как-то рассказать об этом вашей оболочке или Дженкинсу. Если import pandas выдает ошибку, то вы, вероятно, используете другой интерпретатор или другую среду python (но это выходит за рамки данной области).

Возвращаясь к вашему сценарию

После этого ответа о переполнении стека вы увидите, что вся строка #!/usr/bin/env python делает, чтобы убедитесь, что вы используете первый интерпретатор python в пути к среде вашего Ubuntu. Который почти наверняка не тот, который вы установили с anaconda3. Скорее всего, это будет по умолчанию python 2, распространяемый с Ubuntu. Если вы хотите убедиться, какой именно интерпретатор выполняет ваш скрипт, вместо слова «Hello World» вставьте внутрь:

#!/usr/bin/env python

import sys

print(sys.executable) # this line will give you the exact path to the interpreter
print(sys.version)    # this one will give you the version

Хорошо, что делать?

Хорошо, запустите ваш скрипт, используя правильный интерпретатор. Удалите #!/usr/bin/env python из вашего файла и, если у вас есть конвейер, добавьте туда:

sh "/home/yourname/anaconda3/bin/python /path_to_python_file/myFile.py"

Это, скорее всего, решит проблему. Он также достаточно гибкий в том смысле, что если вы когда-нибудь захотите использовать этот файл python на другом компьютере, ваше имя пользователя не будет жестко задано внутри.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...