質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

解決済

Apache AirflowのDAGプログラムでOracle CloudのPythonSDK(oci)をimportする方法について

kyami0613
yami0613

総合スコア10

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1回答

0リアクション

0クリップ

176閲覧

投稿2022/08/31 00:06

編集2022/08/31 00:13

前提

下記記事を参考にOracle Linux 8にApache Airflowをインストールしています。
https://dev.classmethod.jp/articles/trying-apache-airflow-quick-start-docker/
また、ホスト機にOracle CloudのPythonSDKをインストールしています。

PythonSDKをDAGで実行するプログラムを作成したところ以下のエラーメッセージが発生しました。

Broken DAG: [/opt/airflow/dags/test_dag.py] Traceback (most recent call last): File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "/opt/airflow/dags/test_dag.py", line 9, in <module> import oci ModuleNotFoundError: No module named 'oci'

実現したいこと

DAGで作成したプログラムでPythonSDKを使えるようにしたい
(またはociモジュールをインポートできるようにしたい)

発生している問題・エラーメッセージ

Broken DAG: [/opt/airflow/dags/test_dag.py] Traceback (most recent call last): File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "/opt/airflow/dags/test_dag.py", line 9, in <module> import oci ModuleNotFoundError: No module named 'oci'

該当のソースコード

python

from datetime import datetime, timedelta from airflow import DAG from airflow.utils.dates import days_ago from airflow.operators.bash import BashOperator from airflow.operators.python import PythonOperator import os import sys sys.path.append('/usr/lib/python3.6/site-packages/oci') import oci default_args = { 'owner': 'airflow', 'depends_on_past': False, 'start_date': days_ago(0), } with DAG( 'test_dag', default_args=default_args, description='Test DAG', schedule_interval=None, catchup=False, ) as dag: t1 = BashOperator( task_id='print_date', bash_command='date', ) def object_storage_list(**kwargs): config = oci.config.from_file( "~/.oci/config",) identity = oci.identity.IdentityClient(config) object_storage_client = oci.object_storage.ObjectStorageClient(config) namespace_name="*******" bucket_name="******" get_object_list = object_storage_client.list_objects(namespace_name,bucket_name) return get_object_list.data run_this = PythonOperator( task_id = 'object_list', python_callable=object_storage_list, ) t1 >> run_this

試したこと

  1. ociのパスが読めにいけないと思い、sys.path.appendで明示的にociモジュールのパスを追加したがエラーのまま
import sys sys.path.append('/usr/lib/python3.6/site-packages/oci') import oci
  1. docker環境上(root_airflow-webserver_1 , root_airflow-worker_1)にもPytonSDKをインストールし、対話モードでociをインポート出来ることを確認したが、エラーのまま
[root@airflow ~]# docker-compose ps Name Command State Ports ------------------------------------------------------------------------------------------------------------------------------- root_airflow-init_1 /usr/bin/dumb-init -- /ent ... Exit 0 root_airflow-scheduler_1 /usr/bin/dumb-init -- /ent ... Up (unhealthy) 8080/tcp root_airflow-webserver_1 /usr/bin/dumb-init -- /ent ... Up (healthy) 0.0.0.0:8080->8080/tcp,:::8080->8080/tcp root_airflow-worker_1 /usr/bin/dumb-init -- /ent ... Up (unhealthy) 8080/tcp root_flower_1 /usr/bin/dumb-init -- /ent ... Up (healthy) 0.0.0.0:5555->5555/tcp,:::5555->5555/tcp, 8080/tcp root_postgres_1 docker-entrypoint.sh postgres Up (healthy) 5432/tcp root_redis_1 docker-entrypoint.sh redis ... Up (healthy) 0.0.0.0:6379->6379/tcp,:::6379->6379/tcp

補足情報(FW/ツールのバージョンなど)

ホストOS:Oracle Linux Server 8.6
Apache Airflow:v2.1.0

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。