Size: a a a

Python для анализа данных

2021 February 15

АВ

Алексей Веселов... in Python для анализа данных
Jack Finch
import sys
sys.path.append(‘your_func _abs_path’)
import functions
спс, я пробовали таким образом сделать ток вот типа того sys.path.insert(0, '/the/folder/path/name-package/')
а затем делал импорт - но в моем случае это не помогло
источник

АВ

Алексей Веселов... in Python для анализа данных
я в и тоге забил и внес в скрипт нужные функции - неудобно конечно так делать но ничего лучше не получилось придумтаь
источник
2021 February 16

I

Igor in Python для анализа данных
Алексей Веселов
не такое не помогло - airflow один фиг ругается что я пытаюсь импортировать функции из файла которого нет - это последние обновления его - он при загрузке скрипта и еще до запуска его бракует все где есть какие-то непонятные ему импорты
У меня работает импорт нормально. И ты уверен что именно airflow, а не python ругается?
источник

I

Igor in Python для анализа данных
Алексей Веселов
не такое не помогло - airflow один фиг ругается что я пытаюсь импортировать функции из файла которого нет - это последние обновления его - он при загрузке скрипта и еще до запуска его бракует все где есть какие-то непонятные ему импорты
Посмотри верно ли указан путь через os.path.exists.
источник

СМ

Саша Михайлов... in Python для анализа данных
Алексей Веселов
спс, я пробовали таким образом сделать ток вот типа того sys.path.insert(0, '/the/folder/path/name-package/')
а затем делал импорт - но в моем случае это не помогло
Я сам недавно разбирался с таким. Мне помогло добавить файл  init .py в папку с модулем, чтобы питон мог импортировать его. И ещё понял, что даги запускаются из другой папки, а не из корня репозитория.
источник

АВ

Алексей Веселов... in Python для анализа данных
Igor
У меня работает импорт нормально. И ты уверен что именно airflow, а не python ругается?
Да скорее именно эйрфлоу, в последнем релизе если ты заливаешь скрипт то он сразу проверяет импорты судя по всему и если что-то не так то ругается
источник

АВ

Алексей Веселов... in Python для анализа данных
Igor
Посмотри верно ли указан путь через os.path.exists.
Да я правильно указывал но ошибка продолжала висеть
источник

АВ

Алексей Веселов... in Python для анализа данных
Но я в любом случае буду ещё пробовать может я где и накосячил) пока что в скрипт напрямую воткнул функции, чтоб проверить сам скрипт)

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

СМ

Саша Михайлов... in Python для анализа данных
Алексей Веселов
Да скорее именно эйрфлоу, в последнем релизе если ты заливаешь скрипт то он сразу проверяет импорты судя по всему и если что-то не так то ругается
у меня так и ранняя версия ругается. Когда питон импортирует модуль, он его «компилирует» в .pyc и по ходу выполняет.
источник

I

Igor in Python для анализа данных
Алексей Веселов
Да скорее именно эйрфлоу, в последнем релизе если ты заливаешь скрипт то он сразу проверяет импорты судя по всему и если что-то не так то ругается
Ну, он проверяет весь скрипт, а ошибка загрузки дага возникает, когда проблема в скрипте, но, опять же, это ошибка python,а не airflow. Попробуйте в интерпретаторе с рабочей папки импортировать модули и его использовать.
источник

АВ

Алексей Веселов... in Python для анализа данных
Igor
Посмотри верно ли указан путь через os.path.exists.
Вы тут  имеете ввиду вот такое решение?

import sys
sys.path.insert(0, 'path/to/your/py_file')

import py_file
источник

АВ

Алексей Веселов... in Python для анализа данных
Я так прописывал - я нагуглил это решение но эйрфло продолжил ругаться - путь указал верно
источник

I

Igor in Python для анализа данных
Алексей Веселов
Я так прописывал - я нагуглил это решение но эйрфло продолжил ругаться - путь указал верно
Я имею ввиду зайдите в папку с кодом, откройте файл и попробуйте выполнить импорт вручную с рабочей папки
источник

АВ

Алексей Веселов... in Python для анализа данных
Ток единственно - надо ли sys.path.insert - эту строку в тело if name == засовывать
источник

I

Igor in Python для анализа данных
Алексей Веселов
Ток единственно - надо ли sys.path.insert - эту строку в тело if name == засовывать
Зачем?
источник

АВ

Алексей Веселов... in Python для анализа данных
Igor
Зачем?
Вообще проблема изначально в том что эйрфло запускает скрипт не из папки где этот скрипт лежит
источник

АВ

Алексей Веселов... in Python для анализа данных
И потому если просто положить файл с функциями рядом со скриптом то сами по себе функции из файла не импортнутся
источник

АВ

Алексей Веселов... in Python для анализа данных
Если прописать import * from my_file
источник

I

Igor in Python для анализа данных
Алексей Веселов
И потому если просто положить файл с функциями рядом со скриптом то сами по себе функции из файла не импортнутся
Какое-то странное и неверное утверждение
источник

I

Igor in Python для анализа данных
Просто нужно в файле с данным скриптом сделать os.chdir на папку, где лежат скрипты
источник