コンテンツにスキップ

スクリプト開発 / ユーザー Python モジュールのアップロード

場合によっては、ユーザーが必要とする Python モジュールが PyPI プラットフォームに公開されておらず、ファイル形式で直接存在することがあります。

このような場合、これらのファイルを DataFlux Func のリソースディレクトリの「user-python-packages/」ディレクトリにアップロードし、スクリプト内で直接参照できます。

1. Python モジュールのアップロード

ユーザーは実際の状況に応じてアップロード方法を選択できますが、結果に違いはありません。

ホストマシンへの直接アップロード

ユーザーがホストマシンへのアクセス権限を持っている場合は、使い慣れた SSH ツールなどで Python ファイル / ディレクトリを {インストールディレクトリ}/data/resources/user-python-packages/ ディレクトリに直接アップロードできます。

デフォルトのインストールディレクトリは /usr/local/dataflux-func です。不明な場合は cat /etc/dataflux-func で確認できます

「ファイル管理」を使用したアップロード

ユーザーがホストマシンへのアクセス権限を持っていない場合は、「管理 / 実験的機能 / ファイル管理を有効にする」をオンにしてから、「管理 / ファイル管理」でアップロードできます。

enable-file-manager.png

upload-zip-file.png

unzip-file.png

ユーザーがアップロードした zip 圧縮ファイルを解凍した後にディレクトリ構造が壊れないようにするため、「ファイル管理」での解凍時にはディレクトリが強制的に作成されます。

そのため、アップロードした zip 圧縮ファイルに元々ディレクトリが 1 層ある場合、解凍後はディレクトリ構造が 1 層多くなります。

実際の状況に応じて、Python モジュールのディレクトリを user-python-packages/xxxxx に移動してください。

move-user-pkg.png

move-dest.png

user-python-packages/ ディレクトリに移動し、アップロードする Python パッケージのディレクトリを確認します。

user-pkg-ready.png

2. アップロードした Python モジュールの使用

アップロードした Python モジュールが次のようになっているとします:

my_pkg/__init__.py
1
from my_pkg.hello_world import hello_world
my_pkg/hello_world.py
1
2
def hello_world():
    return 'Hello, world!!!'

その場合、スクリプト内でこのモジュールを直接 import して使用できます。例:

Python
1
2
3
4
5
import my_pkg

def run():
    data = my_pkg.hello_world()
    print(data)

use-user-pkg.png

3. 注意事項

自分でアップロードした Python モジュールは、他の Python モジュールと名前が重複しないように注意し、元々 extra-python-packages に存在するディレクトリを削除したり、名前を変更したりしないでください。