Help us understand the problem. What is going on with this article?

一般人にpythonプログラムを配布しよう

はじめに

猫も杓子もディープラーニング・AIとうるさいご時世ですが、残念ながら誰でもAIを使いこなせるような時代にはなっていません。
scikit-learnやkerasなど優れたpythonライブラリが整備されていますが、プログラミングの素養がなければ扱えません。

データ解析をデータサイエンティストに任せるのではなく、データに一番近い人が担当するべき。
というのが私の持論であり、データ解析用のpythonプログラムの社内への展開を検討中です。

プログラムの配布方法

pythonプログラムを配布する場合、以下の2つが比較的容易です。
①pyinstallerやpy2exe等で実行ファイル化する
②pythonプログラム(sample.py)を配布して各自で実行してもらう

しかしながら
①:exeファイル化の失敗、実行速度の低下、容量増加
②:非プログラマに配布するのは敷居が高いこと

がデメリットとして挙げられます

そこで、Anacondaが導入されていることを前提としてbatファイルでのプログラム配布・起動方法をまとめました。

batファイルでのプログラム起動

実行したいpythonプログラム名    :sample.py
sample.pyのライブラリ設定ファイル :requirements.txt

sample.pyとrequirements.txtとstart.batが同一フォルダにあるとします。

Anaconda上に必要な仮想環境とライブラリが揃っていれば、以下の2行で済みます。

quick_start.bat
call activate sample_env
call python sample.py

Anacondaがインストールされているが、仮想環境も必要ライブラリもない場合
つまり、初回起動時には色々と準備が必要です。

start.bat
REM Anacondaの存在確認
SET filename_anaconda="%USERPROFILE%\Anaconda3"
IF EXIST %filename_anaconda% (GOTO ANACONDA_EXIST) ELSE ANACONDA_NOT_EXIST

:ANACONDA_NOT_EXIST
echo Anacondaをインストールしてください
start https://www.anaconda.com/distribution/
exit /B

:ANACONDA_EXIST
REM Anacondaがインストールされています

REM start.batのフォルダへ移動
cd /d %~dp0

call %USERPROFILE%\Anaconda3\Scripts\activate.bat

REM condaが実行できるか確認
call conda -V

SET VIRTUAL_ENV_NAME="sample_env"
REM 仮想環境をactivateします
call activate %VIRTUAL_ENV_NAME%

if errorlevel 1 (
REM 仮想環境のactivateに失敗しました
REM 仮想環境を作成開始します
echo Y | conda create -n %VIRTUAL_ENV_NAME% python=3.6
)

call activate %VIRTUAL_ENV_NAME%
call pip install -r requirements.txt
call python sample.py

Anacondaの導入確認や仮想環境の作製やpip installが増えています。

注意点

1:簡略化のため、一部のエラー処理を省いています。

2:pipでインストールできないソフト(例:graphviz)も自動ダウンロードさせることは可能ですが
利用規約的に問題ないか確信が持てないので、今回は記載いたしません。

同様にAnacondaの自動ダウンロードやインストールも避けた方が良いと考えています。

3:既に必要ライブラリがインストールされていてもpip installしていますので、少し無駄があります。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away