У меня возникли проблемы с установкой PyFlink
/apache-flink 1.19.0
с помощью Python Docker 3.9–3.12 после официального руководства.
Кажется, ошибка связана с путем, возвращающим NoneType
, но я не знаю, как это исправить.
Я не ставил python:3.12
, так как ошибка такая же, как и у других.
Можете ли вы помочь мне в этом?
Большое спасибо.
docker run - it python:3.9 python - m pip install apache-flink
× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> [22 lines of output]
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
main()
File "/usr/local/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
json_out['return_val'] = hook(**hook_input['kwargs'])
File "/usr/local/lib/python3.9/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 118, in get_requires_for_build_wheel
return hook(config_settings)
File "/tmp/pip-build-env-rdoi1tww/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 162, in get_requires_for_build_wheel
return self._get_build_requires(
File "/tmp/pip-build-env-rdoi1tww/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 143, in _get_build_requires
self.run_setup()
File "/tmp/pip-build-env-rdoi1tww/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 267, in run_setup
super(_BuildMetaLegacyBackend,
File "/tmp/pip-build-env-rdoi1tww/overlay/lib/python3.9/site-packages/setuptools/build_meta.py", line 158, in run_setup
exec(compile(code, __file__, 'exec'), locals())
File "setup.py", line 169, in <module>
include_dirs=get_java_include() + ['src/main/c/pemja/core/include'],
File "setup.py", line 111, in get_java_include
inc = os.path.join(get_java_home(), inc_name)
File "/usr/local/lib/python3.9/posixpath.py", line 76, in join
a = os.fspath(a)
TypeError: expected str, bytes or os.PathLike object, not NoneType
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error
× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.
docker run - it python:3.10 python - m pip install apache-flink
× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> [22 lines of output]
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
main()
File "/usr/local/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
json_out['return_val'] = hook(**hook_input['kwargs'])
File "/usr/local/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 118, in get_requires_for_build_wheel
return hook(config_settings)
File "/tmp/pip-build-env-ptcni4h1/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 162, in get_requires_for_build_wheel
return self._get_build_requires(
File "/tmp/pip-build-env-ptcni4h1/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 143, in _get_build_requires
self.run_setup()
File "/tmp/pip-build-env-ptcni4h1/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 267, in run_setup
super(_BuildMetaLegacyBackend,
File "/tmp/pip-build-env-ptcni4h1/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 158, in run_setup
exec(compile(code, __file__, 'exec'), locals())
File "setup.py", line 169, in <module>
include_dirs=get_java_include() + ['src/main/c/pemja/core/include'],
File "setup.py", line 111, in get_java_include
inc = os.path.join(get_java_home(), inc_name)
File "/usr/local/lib/python3.10/posixpath.py", line 76, in join
a = os.fspath(a)
TypeError: expected str, bytes or os.PathLike object, not NoneType
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error
× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.
note: This error originates from a subprocess, and is likely not a problem with pip.
docker run - it python:3.11 python - m pip install apache-flink
× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> [27 lines of output]
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
main()
File "/usr/local/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
json_out['return_val'] = hook(**hook_input['kwargs'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 118, in get_requires_for_build_wheel
return hook(config_settings)
^^^^^^^^^^^^^^^^^^^^^
File "/tmp/pip-build-env-jpt4cjc2/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 162, in get_requires_for_build_wheel
return self._get_build_requires(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/pip-build-env-jpt4cjc2/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 143, in _get_build_requires
self.run_setup()
File "/tmp/pip-build-env-jpt4cjc2/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 268, in run_setup
self).run_setup(setup_script=setup_script)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/pip-build-env-jpt4cjc2/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 158, in run_setup
exec(compile(code, __file__, 'exec'), locals())
File "setup.py", line 169, in <module>
include_dirs=get_java_include() + ['src/main/c/pemja/core/include'],
^^^^^^^^^^^^^^^^^^
File "setup.py", line 111, in get_java_include
inc = os.path.join(get_java_home(), inc_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen posixpath>", line 76, in join
TypeError: expected str, bytes or os.PathLike object, not NoneType
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error
× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.
Это работает в Windows. Но при использовании этой команды на Mac она не работает: это проблема с разрешением?
docker run -it python:3.11 pip install apache-flink
Моя конфигурация Мака:
Сообщение ниже:
× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> [27 lines of output]
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
main()
File "/usr/local/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
json_out['return_val'] = hook(**hook_input['kwargs'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 118, in get_requires_for_build_wheel
return hook(config_settings)
^^^^^^^^^^^^^^^^^^^^^
File "/tmp/pip-build-env-r8xb1epe/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 162, in get_requires_for_build_wheel
return self._get_build_requires(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/pip-build-env-r8xb1epe/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 143, in _get_build_requires
self.run_setup()
File "/tmp/pip-build-env-r8xb1epe/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 268, in run_setup
self).run_setup(setup_script=setup_script)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/tmp/pip-build-env-r8xb1epe/overlay/lib/python3.11/site-packages/setuptools/build_meta.py", line 158, in run_setup
exec(compile(code, __file__, 'exec'), locals())
File "setup.py", line 169, in <module>
include_dirs=get_java_include() + ['src/main/c/pemja/core/include'],
^^^^^^^^^^^^^^^^^^
File "setup.py", line 111, in get_java_include
inc = os.path.join(get_java_home(), inc_name)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "<frozen posixpath>", line 76, in join
TypeError: expected str, bytes or os.PathLike object, not NoneType
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
Вы привязаны к использованию Flink?
Эти команды должны работать:
docker run -it python:3.9 pip install apache-flink
docker run -it python:3.10 pip install apache-flink
docker run -it python:3.11 pip install apache-flink
Пакет apache-flink
во всех случаях будет установлен в работающий контейнер. Однако сразу после установки пакета контейнер закроется, так что это не очень полезно.
Было бы разумнее создать новый образ с установленным пакетом.
🗎 Dockerfile
FROM python:3.11
RUN pip install apache-flink==1.19.0
Сборка и запуск.
docker build -t python-flink .
docker run -it python-flink
В работающем контейнере вы сможете импортировать pyflink
.
Я не публиковал python:3.12, так как ошибка такая же, как и у других.
Вы уверены? На самом деле я получаю другую ошибку с Python 3.12, которая выглядит как проблема совместимости версий с пакетом apache-flink
.
Да, это работает для Python: 3.11. Я уверен, что для Python3.12 я получил ту же ошибку, что и раньше (я использую Mac). Сегодня, когда я использую Windows, у меня другая версия: AttributeError: module 'pkgutil' has no attribute 'ImpImporter'. Did you mean: 'zipimporter'?
. Но в любом случае, спасибо за вашу помощь.
Да, это та же ошибка, что и в Python 3.12. Я думаю, что должна возникнуть проблема совместимости текущей версии apache-flink
и Python 3.12.
Это странно: у меня такая же ошибка, если я использую Mac. Обновил вопрос
Хорошо, так вам нужен Python 3.12 или подойдет 3.11? Если да, то думаю проблема решена.
Мне нужна версия 3.11, я использую Mac с Docker, но она работает только для Windows, надеюсь, вы сможете помочь.
Это работает на Linux и, предположительно, на Mac: docker run -it python:3.11 pip install apache-flink
. Я не понимаю, в чем проблема, когда вы это используете. Выше вы прокомментировали: «Да, это работает для Python: 3.11».
Для тех, у кого такая же проблема, как и у меня, кто пытается установить apache-flink
в Macbook M1 через докер, я нашел ответ.
Основная причина: pemja требует установки JAVA_HOME
Итак, все, что вам нужно сделать, это сначала установить JAVA jdk (не jre):
Python:3.11
.
apt install -y openjdk-17-jdk
JAVA_HOME
с помощью: export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-arm64
.
pemja
: pip install pemja
.pip install apache-flink
Тогда вы сможете успешно установить клиент apache-flink
.
Последний шаг — зафиксировать этот образ и создать собственный образ Docker:
docker commit -m "fix apche-flink install issue" <your container name> <your_docker_image_name>:<your_docker_image_tag>
Надеюсь, это кому-то поможет.
Не уверен, что при запуске
docker run -it --rm python:3.9 python -m pip install apache-flink
я успешно устанавливаю модуль. Попробуйте убрать пробелы между- i
и- m
.