

.pyファイルをpyinstallerでexe化して実行した所、エラー表示。

[code]

    (base) C:\Users\genki>C:\Users\genki\Downloads\dist\test01.exe
    Traceback (most recent call last):
      File "test01.py", line 7, in <module>
    NameError: name 'get_ipython' is not defined
    [9180] Failed to execute script test01
    
    
[/code]

上記エラー文を翻訳

"トレースバック（最後の最後の呼び出し）：  
のファイル "test01.py"、7行目  
NameError：名前 'get_ipython'が定義されていません  
[9180]スクリプトtest01の実行に失敗しました  
"  
"NameError: name 'get_ipython' is not defined"を検索参照して解決を試みましたが、  
混沌を深め…本サイトへの投稿となりました。  
ご教授お願いします。

下記に".pyファイル"添付します。

[code]

    #!/usr/bin/env python                               
    # coding: utf-8                             
                                    
    # In[1]:                                
                                    
                                    
    get_ipython().system('pip3 install -U selenium')                                
                                    
                                    
    # In[2]:                                
                                    
                                    
    get_ipython().system('pip3 install webdriver_manager')                              
                                    
                                    
    # In[3]:                                
                                    
                                    
    from selenium import webdriver                              
    from webdriver_manager.chrome import ChromeDriverManager                                
                                    
                                    
    # In[4]:                                
                                    
                                    
    driver = webdriver.Chrome(ChromeDriverManager().install())                              
    driver.get('https://scraping-for-beginner.herokuapp.com/login_page')                                
                                    
                                    
    # In[5]:                                
                                    
                                    
    elem_username = driver.find_element_by_id('username')                               
    elem_username.send_keys('imanishi')                             
                                    
                                    
    # In[ ]:                                
    
    
[/code]

・コメントアウト実行しました。（意味も理解）  
・"pyファイル内にfrom IPython import get_ipythonとかいて python で動かす"  
とありますが、下記の場所でいいのでしょうか？

[code]

    from selenium import webdriver
    from webdriver_manager.chrome import ChromeDriverManager
    from IPython import get_ipython
    
    
[/code]

又、”変換していない.pyファイルをPythonまたはIPythonで実行させてみる”とは、  
下記の方法でいいのでしょか？

[code]

    (practice) C:\Users\genki\Downloads>python                      
    Python 3.9.4 (default, Apr  9 2021, 11:43:21) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32                        
    Type "help", "copyright", "credits" or "license" for more information.                      
    >>> test04.py                       
    
[/code]

[code]

    (practice) C:\Users\genki\Downloads>IPython                             
    Python 3.9.4 (default, Apr  9 2021, 11:43:21) [MSC v.1916 64 bit (AMD64)]                               
    Type 'copyright', 'credits' or 'license' for more information                               
    IPython 7.22.0 -- An enhanced Interactive Python. Type '?' for help.                                
                                    
    In [1]: test04.py                               
    
[/code]


CC BY-SA 4.0
2021-09-21T08:37:48.023
82618
2022-05-16T11:04:35.437
2021-09-22T07:54:22.627
47203
47203
question
python3 pyinstaller
.pyファイルをpyinstallerでexe化して実行した所、エラー表示


それら2つの`get_ipython().system(...)`の行は不要でしょう。  
.pyに変換する前かPyInstallerで処理する前に、コメントアウトするか削除しておいてください。

その関数はJupyterLabで`!pip3 install
...`した内容が変換されただけであり、それはJupyterLabの環境で1度だけ実行されればJupyterLabの中でも不要になるはずの行です。

こちらの記事を参考に。  
[JupyterLabで.pyデータを書き出したら「NameError: name 'get_ipython' is not
defined」が出た](http://ziyuudesu.seesaa.net/article/475557783.html)  
以下は抜粋です。

> JupyterLabでコーディングをしたあと、問題なく動いたので「.py」ファイルに書き出しをしたら、、、
>
> どうやら7行目に問題があるみたいなので見てみると
>
> あれ？JupyterLabでは↓↓だったはず！
>
> !pip install selenium
>
> JupyterLabで「!pip install 〇〇」の部分をコメントアウトして「.py」に書き出して実行した所...動きました⤴⤴

該当の行が`!pip3 install ...`ではなく、毎回の動作に必要な行の場合はこちらでしょう。  
[JupyterLabからエクスポートしたファイルをローカルで動かしたい](https://teratail.com/questions/268980)

> `NameError: name 'get_ipython' is not defined` とエラーが出ているので、`get_ipython`
> が定義されていません。
>

>> コマンドプロンプト上で python と打って、pyファイルをドラッグしたのですが

>
> とありますが、解決方法は以下の2通りあると思います。
>
>   * `python` ではなくて `ipython` とする
>   * pyファイル内に `from IPython import get_ipython` とかいて `python` で動かす
>

あるいは置き換えるなら上記よりも`os`モジュールの[os.system(command)](https://docs.python.org/ja/3/library/os.html#os.system)か`subprocess`モジュールの[subprocess.run(...)](https://docs.python.org/ja/3/library/subprocess.html#subprocess.run)の方が良さそうですが。

* * *

追記内容対応：

現在記述されている`get_ipython().system(...)`の行は不要なので、`from IPython import
get_ipython`を追加する必要はありません。  
ただしもし本当に必要ならその呼び出す行よりも前にimportしておく必要があります。

”変換していない.pyファイルをPythonまたはIPythonで実行させてみる”とは、スクリプトファイル名の文字列を入力するのではなく、ファイルの中身をコピペするか、`python
test04.py`のようにpython起動時のパラメータにスクリプトファイル名(カレントフォルダでなければフルパス)を指定するものです。


CC BY-SA 4.0
2021-09-21T11:22:52.760
82622
2021-09-22T08:10:50.313
2021-09-22T08:10:50.313
26370
26370
82618
answer