前提・実現したいこと
pyinstallerでexe化したPythonスクリプトで、Pycharmですでに構築されている仮想環境を有効化し、仮想環境内でpipでインストールされているモジュール(pyautogui)を利用した別のPythonスクリプトを実行したい。
該当のソースコード
Python
1# main.py 2 3import subprocess 4 5# pyautoguiがインストールされた仮想環境ディレクトリの「activate.bat」を実行して仮想環境を有効化 6cmd = r"C:\Users\ユーザー名\PycharmProjects\venv\Scripts\activate.bat" 7subprocess.call(cmd, shell=True) 8 9# sub.pyを実行 10cmd = "Python " + r"C:\Users\ユーザー名\PycharmProjects\sub.py" 11subprocess.call(cmd, shell=True)
Python
1# sub.py 2 3import pyautogui 4 5# ディスプレイの一番左上をクリックします 6pyautogui.click( 1, 1 ) 7
発生している問題・エラーメッセージ
main.pyを以下のコードでpyinstallerでexe化
pyinstaller main.py --onefile
を行い実行してみると、コマンドプロンプトが立ち上がり、下記のエラーメッセージが表示されて、sub.pyは実行されることなく(ディスプレイの一番左上がクリックされない)コマンドプロンプトが終了してしまいます。
エラーメッセージ Traceback (most recent call last): File "C:\Users\ユーザー名\PycharmProjects\sub.py", line 1, in (module> import pyautogui ModuleNotFoundEroo: No module named 'pyautogui'
試したこと
開いたばかりの何も入力していないコマンドプロンプトで
C:\Users\ユーザー名>Python C:\Users\ユーザー名\PycharmProjects\main.py
と入力して実行すると
上記と同じエラーメッセージが表示されますが
C:\Users\ユーザー名>C:\Users\ユーザー名\PycharmProjects\venv\Scripts\activate.bat
と入力して実行すると
(venv)
と行頭に表示されて仮想環境が有効化され
(venv) C:\Users\ユーザー名>Python C:\Users\ユーザー名\PycharmProjects\main.py
と入力して実行するとエラーメッセージの表示は無く、正常にスクリプトが実行されることは確認できました。
Pycharmのターミナルで、deactivateで仮想環境から抜けた状態で
C:\Users\ユーザー名>Python C:\Users\ユーザー名\PycharmProjects\main.py
と実行すると、上記と同じエラーメッセージが表示されましたが、activate.batを実行してからmain.pyを実行すると、正常に実行されたことから、subprocessを使用して入力したコマンドプロンプトへの入力内容が、次のモジュールを使用した処理に引き継がれていないのかと思い、shell=Trueを追加してみましたが思うような動作ができず行き詰りました。
何卒、ご教授の程よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
- Python 3.7
- PyCharm 2018.3.6 (Community Edition)
pipで仮想環境にpyautoguiをインストールしました
- windows10
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/18 14:58