Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the all-in-one-seo-pack domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the easy-fancybox domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the urvanov-syntax-highlighter domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the breadcrumb-navxt domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114

Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the advanced-ads domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114

Notice: 関数 _load_textdomain_just_in_time が誤って呼び出されました。lancr ドメインの翻訳の読み込みが早すぎました。これは通常、プラグインまたはテーマの一部のコードが早すぎるタイミングで実行されていることを示しています。翻訳は init アクション以降で読み込む必要があります。 詳しくは WordPress のデバッグをご覧ください。 (このメッセージはバージョン 6.7.0 で追加されました) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php on line 6114

Warning: Cannot modify header information - headers already sent by (output started at /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php:6114) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-content/plugins/all-in-one-seo-pack/app/Common/Meta/Robots.php on line 87

Warning: Cannot modify header information - headers already sent by (output started at /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/functions.php:6114) in /virtual/mcu03iphuk/public_html/radiology-technologist.info/wp-includes/feed-rss2.php on line 8
exe | 診療放射線技師がPythonをはじめました。 http://radiology-technologist.info 診療放射線技師のPython日記。解析等で使えるコードを作成、アップしていきたいと思っています。その他いろいろ Wed, 16 Dec 2020 13:36:20 +0000 ja hourly 1 https://wordpress.org/?v=6.7 https://i0.wp.com/radiology-technologist.info/wp-content/uploads/2018/09/cropped-logo5.png?fit=32%2C32 exe | 診療放射線技師がPythonをはじめました。 http://radiology-technologist.info 32 32 164362728 exe化、pyinstallerでは起動が遅いのでcx_Freezeを使ってみた。 http://radiology-technologist.info/post-684 Sat, 06 Jun 2020 11:16:51 +0000 http://radiology-technologist.info/?p=684 はじめに 以前、pyinstallerを用いてDI […]

The post exe化、pyinstallerでは起動が遅いのでcx_Freezeを使ってみた。 first appeared on 診療放射線技師がPythonをはじめました。.]]>
はじめに

以前、pyinstallerを用いてDICOM画像の匿名化ソフトを作成するときにpyinstallerを用いた記事を書きました。

自分が作成したプログラムをexe化する時にもpyinstallerを用いたのですが、そのファイルの起動が遅いなと感じていました。

ただ、その時はまだ許容範囲内だったのですが最近研究用のプログラムをexe化したらこれがやたらと遅い。。。。

3分ぐらいかかってやっと起動。

これじゃ、、、、、、

exe化できる他のライブラリーが無いかなと探していたらcx_Freezeなるものがあるのを知り使ってみましたのでレポートしてみたいと思います。


広告
デル株式会社

インストール

インストールはpipを用いてインストールしました。コマンドプロンプトを立ち上げて、exe化する仮想環境でpipを実行します。

今回のプログラムは前回構築した仮想環境で作成しているのでそちらにインストールします。

http://radiology-technologist.info/2020/05/17/post-637/
環境構築に関してはこちら!!

まずは、コマンドプロンプトを立ち上げて仮想環境をアクティベートします。以前構築した環境名はv3.6なので以下のコマンドで実行します。

conda activate v3.6

上記コマンドを実行した後、以下の図の様に初めに(V3.6)と環境名が出ていればアクティベートできています。

その後、pipを用いてインストールします。Freezeの ‘F’ が大文字なので気を付けてください。

pip install cx_Freeze

これで、インストールが完了しました。


広告
HP Directplus -HP公式オンラインストア-

セットアップファイルの作成

pyinstallを使用する際は必要なかったのですが、cx_Freezeを使用する場合はsetupファイルを作成しなくてはいけません。

このサイトを参考にさせて頂きました。

作る場所は、exe化したいプロジェクトのフォルダに作成します。

# coding: utf-8
 
import sys, os
from cx_Freeze import setup, Executable

file_path = input("アプリ化したいpy:")

if sys.platform == "win32":
    base = None # "Win32GUI" 

    os.environ['TCL_LIBRARY'] = "C:\\Users\\[user名]\\anaconda3\\envs\\v3.6\\tcl\\tcl8.6"
    os.environ['TK_LIBRARY']  = "C:\\Users\\[user名]\\anaconda3\\envs\\v3.6\\tcl\\tk8.6"
else:
    base = None # "Win32GUI"

#importして使っているライブラリを記載
packages = []

#importして使っているライブラリを記載(こちらの方が軽くなるという噂)
includes = [
    "sys",
    "os",
    "requests",
]

#excludesでは、パッケージ化しないライブラリやモジュールを指定する。
"""
numpy,pandas,lxmlは非常に重いので使わないなら、除く。(合計で80MBほど)
他にも、PIL(5MB)など。
"""
excludes = [
    "numpy",
    "pandas",
    "lxml"
]

exe = Executable(
    script = file_path,
    base = base
)
 
# セットアップ
setup(name = 'main',
      options = {
          "build_exe": {
              "packages": packages, 
              "includes": includes, 
              "excludes": excludes,
          }
      },
      version = '0.1',
      description = 'converter',
      executables = [exe])

ここで12、13行目のTCL_LIBRARYとTK_LIBRARYの設定ですが、ここは人それぞれで変わってきます。

tcl8.6とtk8.6のファイルは仮想環境ごとにあります。

私の場合、仮想環境の情報はanacondaがインストールしてあるフォルダのenesの中にあります。場所が分からない場合はPyCharmを立ち上げて「ファイル」→「設定」→「プロジェクト」→「Pythonインタープリター」を開き「プロジェクト・インターぷりたー」に記載されているパスを追っていくと、仮想環境の場所までたどり着きます。そこにtclのフォルダがありますので、そこの「tcl8.6」と「tk8.6」のファイルのパスを指定してあげればOKです。

後は、18行目や、21行目、38行目の設定をして完了となります。

importしているライブラリに関しては、全て書いてしまいました。

また、32行目のexcludesには仮想環境内にインストールしていて、使っていないライブラリを記載しておきました。


広告
BTOパソコン・パソコン関連商品がお買い得!パソコン工房のセール

いざ、exe化!

まずは、コマンドプロンプトを立ち上げディレクトリーをexe化したいフォルダまで移動します。

移動の仕方は’cd 移動先フォルダのパス’で移動できます。

そこで、以下のコマンドを打ちます。

python setup.py build

その後、exe化したいファイル名を聞かれますので一番初めの文字を打ち込みTabキーを押していくと目的のファイルが表示されるので、Enterを押すとexe化の処理が始まります。

処理が完了すると「build」というフォルダが出来上がっています。

その中に「exe.win-amd64-・・・」というフォルダがあり、その中にexeファイルがあります。それをダブルクリックすることでプログラムが起動します。

ちなみに、exeファイルだけでは起動しません。なので、移動したい場合はフォルダごと移動し、exeファイルのショートカットをデスクトップなり希望の場所に配置して使用してください。

いかがでしたか?きちんと起動しましたか?


最後に

今回は、cx_Freezeを用いてプロジェクトをexe化のレポートをしました。

pyinstallを用いた場合、3分程度かかっていたものがcx_Freezeを用いることで数秒で起動するようになりました。

正直、setupファイルを作成するのは面倒ですが、その後の起動時間を考えたらcx_Freezeは絶対に使った方がいいと思います。

また、一度作成したsetupファイルは再利用もできるので初めだけの苦労と思えばがんばる気になれますよね。

次回は、cx_Freezeで作成した際に起こったエラー対処を書きたいと思います。


環境

  • windows10
  • python3.6.1
  • Anaconda custom(64-bit)
  • PyCharm2020.2(Communication Edition)

広告
上新電機 パソコン買取サービス
The post exe化、pyinstallerでは起動が遅いのでcx_Freezeを使ってみた。 first appeared on 診療放射線技師がPythonをはじめました。.]]>
684
exe化、python3.7は対応しておらず仮想環境構築してみた。 http://radiology-technologist.info/post-637 Sat, 16 May 2020 22:12:55 +0000 http://radiology-technologist.info/?p=637 はじめに こんにちは。前回、匿名化ソフトを作りまし […]

The post exe化、python3.7は対応しておらず仮想環境構築してみた。 first appeared on 診療放射線技師がPythonをはじめました。.]]>
はじめに

こんにちは。前回、匿名化ソフトを作りましたがpythonのバージョンが3.7の場合はexe化できたとしてもエラーが出て使えなかったと思います。実は、私の環境も3.7でexe化してもエラーが出て使えませんでした。

exe化してもエラーがでて使えず・・・・・

いろいろとググってみたのですが、いい解決方法がみつからず結局pyrhonのバージョンを3.6の環境を構築して対策しましたので、その方法を書いてみたいと思います。


広告
デル株式会社

仮想環境とは

そのそも仮想環境とは何なのかということですが、さまざまなライブラリー(numpyとか、openCv等)はいろんなライブラリーと共に使っていくわけなのですが、常に最新のバージョンに対応しているわけではありません。そのため、それぞれのライブラリーがきちんと動くバージョンの環境を構築しなくてはいけません。

今回のexe化もpyinstallerがpython3.7だときちんと動かないのでpython3.6の環境を作ってあげる。それも仮想環境を構築するという事です。


広告
HP Directplus -HP公式オンラインストア-

仮想環境を構築する

python3.6の環境を構築していきたいと思います。

まず、python3.6のバージョンが入っているか確認してみます。PyCharmを立ち上げて初めの画面の下、構成をクリックして「設定」に入ります。

左メニューの「pythonインタープリタ」を選択後、「プロジェクト・インタープリター」の右側下矢印を押して「追加」をクリック

左「Conda Environment」を選択「pythonのバージョン」をクリックして3.6があるか確認します。

この後はコマンドプロンプトでの作業になります。

コマンドプロンプトを立ち上げ

conda create -n 構築する名前 python = 3.6

のコマンドを打ちます。今回は名前をv3.6、pythonのバージョンを3.6で構築したいので最後にpython = 3.6と付け足します。

途中、anacondaの新しいバージョンがありますよと言われていますが・・・

新しく作る環境内に入るライブラリーが表示されています。pydicomが入っていないのがここで確認できます。環境構築後にインストールしましょう。

これで良ければ「y」を入力しエンターで環境が構築されます。

環境構築が無事に終わりました。新しい環境をアクティブにします。

コマンドは

conda activate 環境名  なので

conda activate v3.6

で新しい環境をアクティブにします。先頭に(v3.6)と入っているので環境がアクティブになっているのが確認できます。

そのまま、pydicomのインストールをしてしまいましょう。

pip install pydicom

でインストールです。


広告
BTOパソコン・パソコン関連商品がお買い得!パソコン工房のセール

プロジェクトに仮想環境を適応

PyCharmに戻って、exe化のプログラムのプロジェクトを開きましょう。

「ファイル」で「設定」をクリック。

左「Conda Environment」を選択「既存の環境」右側の「…」をクリックします。anacondaをインストールしたフォルダから「env」を選択すると先ほど構築した環境名のフォルダがあります。その中の「Tools」「python.exe」を選択します。似たフォルダ「pythonw.exe」というフォルダもあるので間違えないように気を付けてください。

これで、「OK」をクリックして完了です。


さいごに

前回の、匿名化のプログラムが動かなかった方は前回の記事にそってexe化を試してみてください。きちんと動くプログラムが出来上がっていると思います。

おつかれさまでした。


環境

  • windows10
  • python3.6.1
  • Anaconda custom(64-bit)
  • PyCharm2020.2(Communication Edition)

広告
上新電機 パソコン買取サービス
The post exe化、python3.7は対応しておらず仮想環境構築してみた。 first appeared on 診療放射線技師がPythonをはじめました。.]]>
637