AlteryxのPythonツールでパッケージを入れるときに必要な権限について

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、小澤です。

Alteryx 2018.3からPythonツールが登場し、Alteryx上でJupyter Notebookを使ってPythonのプログラムが記述できるようになりました。

このツールでは、Alteryx.installPackagesで任意のPythonライブラリを追加可能です。 気になる人は非常に気になることだと思うのですが、この際どこにパッケージが追加されてるのか?他のPythonツールを使ってるワークフローへの影響は?といった部分かと思います。

実はこの"どこにパッケージが追加されるのか"は権限周りの話もかかわってきたりもします。 今回は、そんなお話をしたいと思います。

Pythonツールがどこで動いているか

さて、まず最初にPythonツールで動いているJupyterの実行環境について解説します。

Alteryxではインストール時にMinicondaが一緒にインストールされます。 このMinicondaはもともとPython SDKを使ってツールを開発する際のベースとなる環境として用意されていました。 Python SDKではこのMiniconda内のPythonを使ってツールごとにvenv環境を作成します。

このMiniconda環境が実はPythonツールでも利用されています。 こちらもPythonツール用のvenv環境を構築しているのですが、どこに作っているかというと、 C:\<Alteryxのインストール先>\bin\Miniconda3\PythonTool_venv となっています。

Alteryx.installPackages関数内部ではこのvenv環境のpipを実行してパッケージのインストールをしています。 個別のPythonツールごとに別なvenv環境を作ってる、というわけではなさそうなのでこの点はご注意ください。

パッケージのインストールと管理者ユーザ

さて、Alteryx DesignerにはAdmin版とNon-Admin版があります。 Admin版はデフォルトでC:\Program Files以下にインストールされるわけですが、WindowsのUAC機能により管理者としてアクセスできない場合用にNon-Admin版が利用可能というわけです。

先ほどのPythonツール用のvenv環境はAlteryx Desingerのインストール先の配下に含まれています。 そのため、このフォルダ内にファイルを追加したり、既存のファイルを書き換えたりする場合は管理者権限が必要となるわけです。

ここで問題となるのが、Alteryx.installPackagesでライブラリを追加する際の権限です。 Admin版のAlteryx Designerを一般ユーザで利用すると、インストールするためにパッケージのファイルを追加する権限がないため、エラーとなります。

ちなみにこの際のエラーメッセージは以下のようになっています。

---------------------------------------------------------------------------
CalledProcessError Traceback (most recent call last)
c:\program files\alteryx\bin\miniconda3\pythontool_venv\lib\site-packages\ayx\Package.py in installPackages(package, install_type)
65 [sys.executable, "-m", "pip"] + pip_args_list,
---> 66 stderr = subprocess.STDOUT
67 )

C:\Program Files\Alteryx\bin\Miniconda3\lib\subprocess.py in check_output(timeout, *popenargs, **kwargs)
335 return run(*popenargs, stdout=PIPE, timeout=timeout, check=True,
--> 336 **kwargs).stdout
337

C:\Program Files\Alteryx\bin\Miniconda3\lib\subprocess.py in run(input, timeout, check, *popenargs, **kwargs)
417 raise CalledProcessError(retcode, process.args,
--> 418 output=stdout, stderr=stderr)
419 return CompletedProcess(process.args, retcode, stdout, stderr)

CalledProcessError: Command '['c:\\program files\\alteryx\\bin\\miniconda3\\pythontool_venv\\scripts\\python.exe', '-m', 'pip', 'install', 'keras']' returned non-zero exit status 2.

During handling of the above exception, another exception occurred:

UnicodeDecodeError Traceback (most recent call last)
in ()
1 from ayx import Alteryx
2
----> 3 Alteryx.installPackages('keras')

c:\program files\alteryx\bin\miniconda3\pythontool_venv\lib\site-packages\ayx\export.py in installPackage(package, *args, **kwargs)
33 This function will install a package or list of packages into the virtual environment used by the Python tool. If using an admin installation of Alteryx, you must run Alteryx as administrator in order to use this function and install packages.
34 '''
---> 35 __installPackages__(package, *args, **kwargs)
36
37 # these are the same function.

c:\program files\alteryx\bin\miniconda3\pythontool_venv\lib\site-packages\ayx\Package.py in installPackages(package, install_type)
70 # if any errors, print them to output
71 except subprocess.CalledProcessError as e:
---> 72 print(e.output.decode("utf-8"))
73 raise

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 2962: invalid start byte

インストールに失敗したエラーメッセージを出力しようとして、そのprintがUnicodeDecodeErrorを吐いています。 そのため、元のエラーメッセージを見逃しがちなのでご注意下さい。

これを回避するには、一度Alteryx Designerを管理者として起動して、パッケージのインストールのみを行っておきます。

Alteryx Designerのアイコンを右クリックすると表示される「管理者として実行」を選択します。 通常通り、Alteryx Dsignerが開かれるので、Pythonツールを配置してAlteryx.installPackagesを実行すればOKです。

PythonツールはすべてPythonToo_venv環境を使っているので以降は一般ユーザでAlteryx Designerを起動してもそのままパッケージが利用可能です。

おわりに

今回は、AlteryxでPythonツールを利用してライブラリのインストールを行う際の注意点について解説しました。 エラーメッセージから何が起こってるかわかりづらかったりするので、ご注意ください。

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400