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

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

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

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

Python 3.x

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

Q&A

解決済

1回答

472閲覧

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

kyami0613

総合スコア10

Apache

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

Python 3.x

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

0グッド

0クリップ

投稿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

1from datetime import datetime, timedelta 2from airflow import DAG 3from airflow.utils.dates import days_ago 4from airflow.operators.bash import BashOperator 5from airflow.operators.python import PythonOperator 6import os 7import sys 8sys.path.append('/usr/lib/python3.6/site-packages/oci') 9import oci 10 11default_args = { 12 'owner': 'airflow', 13 'depends_on_past': False, 14 'start_date': days_ago(0), 15} 16 17with DAG( 18 'test_dag', 19 default_args=default_args, 20 description='Test DAG', 21 schedule_interval=None, 22 catchup=False, 23) as dag: 24 t1 = BashOperator( 25 task_id='print_date', 26 bash_command='date', 27 ) 28 29 def object_storage_list(**kwargs): 30 config = oci.config.from_file( 31 "~/.oci/config",) 32 identity = oci.identity.IdentityClient(config) 33 object_storage_client = oci.object_storage.ObjectStorageClient(config) 34 35 namespace_name="*******" 36 bucket_name="******" 37 get_object_list = object_storage_client.list_objects(namespace_name,bucket_name) 38 return get_object_list.data 39 40 run_this = PythonOperator( 41 task_id = 'object_list', 42 python_callable=object_storage_list, 43 ) 44 45t1 >> 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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

環境再構築することで無事インポ―トできました。

投稿2022/09/01 00:31

kyami0613

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問