Но когда я одновременно создал второй подкаталог (с именем «src_common») уровень как первый("src"), у меня возникла проблема:
- ploomber не может корректно загрузить файл для параметризации(env.yaml) в второй подкаталог("src_common").
Код: Выделить всё
tasks:
- source: tasks/get_papers_common.py
product:
nb: output/get_papers_common.ipynb
data: output/openalex_papers.xlsx
- params:
openalex_search_url: "{{openalex_search_url}}"
openalex_filter: "{{openalex_filter}}"
publication_year: "{{publication_year}}"
work_type: "{{work_type}}"
grants_award_id: "{{grants_award_id}}"
openalex_keywords: "{{openalex_keywords}}"
more_keywords: "{{more_keywords}}"
sort: "{{sort}}"
cursor: "{{cursor}}"
RESULTS_PER_PAGE: "{{RESULTS_PER_PAGE}}"
MAX_PAGE: "{{MAX_PAGE}}"
Код: Выделить всё
openalex_search_url: https://api.openalex.org/works
openalex_filter: publication_year:{},type:{},grants.award_id:{},default.search:{},fulltext.search:{}
publication_year: >2000
work_type: article|review
grants_award_id: 310584|646221|604134|760840|686239|814426|814401|814425|760813|760928|862296|862195|862419|953183|952924|952921|964766|965196|965367|964827|965173|964766|101092164|965196|965367|964827|965173
openalex_keywords: 'surface area' AND 'nanoparticle'
more_keywords : exposure
sort: display_name:desc
RESULTS_PER_PAGE: 200
cursor : *
MAX_PAGE: 150
ploomber build -e env.yaml --entry-point Pipeline_common.yaml --force
Я получаю:
Traceback (последний вызов):
Файл "D:\IDEA_on_D\Harmless\T775.venv\Lib\site-packages\ploomber\env\envdict.py", строка 396, в load_from_source
raw = yaml.load(f, Loader=yaml.SafeLoader)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^
Файл "D:\IDEA_on_D\Harmless\T775.venv\Lib\site-packages\yaml_init_.py", строка 79, в загрузке
loader = Loader(поток)
^^^^^^^^^^^^^^
Файл "D:\IDEA_on_D\Harmless\T775.venv\Lib\site-packages\yaml\loader .py", строка 34, в init
Reader.init(self, поток)
Файл "D:\IDEA_on_D\Harmless\T775. venv\Lib\site-packages\yaml\reader.py", строка 85, в init
self.determine_encoding()
файл "D:\IDEA_on_D\Harmless\T775" .venv\Lib\site-packages\yaml\reader.py", строка 124, в define_encoding
self.update_raw()
Файл "D:\IDEA_on_D\Harmless\T775.venv\Lib\site -packages\yaml\reader.py", строка 178, в update_raw
data = self.stream.read(size)
^^^^^^^^^^^^^^^^^ ^^^^^
Файл "C:\Users\dobromir\AppData\Local\Programs\Python\Python311\Lib\encodings\cp1252.py", строка 23, в декодировании
return codecs.charmap_decode (input,self.errors,decoding_table)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^
UnicodeDecodeError: кодек 'charmap' не может декодировать байт 0x81 в позиции 479: карты символов to
Во время обработки вышеуказанного исключения произошло другое исключение:
Traceback (последний последний вызов):
Файл "D: \IDEA_on_D\Harmless\T775.venv\Lib\site-packages\ploomber\env\envdict.py", строка 398, в load_from_source
raise type(e)(
^^^^^^^ ^
TypeError: функция принимает ровно 5 аргументов (1 указан)
Во время обработки вышеуказанного исключения произошло другое исключение:Traceback (последний вызов — последний):
Файл «D:\IDEA_on_D\Harmless\T775.venv\Lib\site-packages\ploomber\cli\io.py», строка 54, в оболочка
fn(**kwargs)
Файл "D:\IDEA_on_D\Harmless\T775.venv\Lib\site-packages\ploomber_core\telemetry\telemetry.py", строка 698, в оболочке
result = func(_payload, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Файл «D:\IDEA_on_D\Harmless\T775.venv\Lib\site-packages\ploomber\cli\build.py», строка 69, в main
dag, args = parser.load_from_entry_point_arg()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Файл "D:\IDEA_on_D\Harmless \T775.venv\Lib\site-packages\ploomber\cli\parsers.py", строка 225, в load_from_entry_point_arg
dag, args = load_dag_from_entry_point_and_parser(entry_point, self, sys.argv)
^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^
Файл "D:\IDEA_on_D\Harmless\T775.venv\Lib\site-packages\ploomber\cli\parsers.py", строка 503, в load_dag_from_entry_point_and_parserdag, args = _process_file_dir_or_glob(parser)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Файл "D:\IDEA_on_D\Harmless\T775.venv\Lib\site-packages\ploomber\cli\parsers.py", строка 421, в _process_file_dir_or_glob
env_dict = EnvDict(
^^^ ^^^^^
Файл "D:\IDEA_on_D\Harmless\T775.venv\Lib\site-packages\ploomber\env\envdict.py", строка 110, в init) = load_from_source(source)
^^^^^^^^^^^^^^^^^^^^^^^
Файл "D:\IDEA_on_D\Harmless\ T775.venv\Lib\site-packages\ploomber\env\envdict.py", строка 406, в load_from_source
если не isinstance(raw, Mapping):
^^^
UnboundLocalError: невозможно получить доступ к локальной переменной «raw», если она не связана со значением
2. Когда я пытаюсь изменить имя only (с env.yaml на env_common.yaml), я получаю:
ploomber build -e env_common.yaml --entry-point Pipeline_common.yaml --force
Ошибка: Ошибка замены заполнителей:
- {{openalex_search_url}}: убедитесь, что заполнитель определен в среде
Подробнее здесь: https://stackoverflow.com/questions/788 ... my-env-yam