Amazon 数量限定タイムセール開催中

WinPython × VSCode × Chrome × Seleniumのポータブル環境を構築【TeilabPython作成方法】

WinPython × VSCode × Chrome × Seleniumのポータブル環境を構築【TeilabPython作成方法】

このページでは、TeilabPythonの作成方法をご紹介しています。

TeilabPythonは、PythonやVSCode自体をインストールしないため、配布後に環境変数の設定やライブラリのインストールも不要です。

そのため、自分用(複数PCで共有)、社内やユーザー配布用など、どんな環境でもすぐに使うことができます。

それとVScode(zip版)内でpipコマンドも使えるため、後でライブラリを追加もでき開発の練習用として配布も可能です。

ノーノちゃん

便利なことはわかったけど、PythonやVScodeとかインストール済みだったらどうなるの?設定が変わったらイヤだよ(T_T)
TeilabPythonを入れることによって、現在の環境に影響をあたえないのでご安心を!ポータブル版(完全独立した環境)で動作します(*^^*)

テイくん

1. まずはじめに

今回ご紹介するTeilabPythonの完成したものは、以下からダウンロードできます。
【TeilabPython配布中】Seleniumを初期設定なしですぐ使える!(保存版)【PART.1】【TeilabPython】Seleniumでブラウザ自動化!初期設定なし!【PART.1】

プログラミング初心者の方へ
自分でポータブル環境を構築したいプログラミング上級者向けのページです。

そのため、Seleniumでブラウザ操作の自動化が目的の方に役立つ内容ではありません。

2. 使用用途について

以下の3通りの状況でTeilabPythonが役立ちます。

3通りの状況
  1. 自分用
  2. 社内配布用
  3. ユーザー配布用

①自分用

複数のPCがある場合、Pythonの環境構築、VScode拡張機能やsetting.jsonを設定すると時間が掛かります。

それとPCの故障、もしくは新しくPC購入や初期化する場合、再度インストールや環境構築をしないといけません。

そのため、クラウドストレージ(Dropbox、Google Drive、OneDriveなど)に入れておけば、再設定が不要になるので便利です。

②社内配布用

社内用にテストツールを作った場合などに簡単に配布できます。

もし社内用のクラウドストレージ(Dropbox、Google Driveなど)があれば、配布しなくても簡単に社員全員で使えます。

それと、ツールを更新した場合、再配布の必要もないのですごく便利です。

③ユーザー配布用

まずは、作成した無料ツールをサイトやブログなどに、zipフォルダにしてアップロードします。

そして、アップロードしたフォルダURLを載せておけば、誰でも簡単に使ってもらうことができます。

もしくは「LINE」「ChatWork」「Slack」「メール」などでも配布が可能です。

ただ容量が大きいため、「ギガファイル便」などのファイル転送サービスが必須です。

exe化はウィルスソフトに誤検知される

PyInstallerでexe化して配布すると、ファイル自体を高確率で駆除される可能性があります。

主要なウイルスソフトのNorton、ウイルスバスター、AVAST、AVGなどは「トロイの木馬ウイルス」と誤認されます。

理由は、クラッカー(ハッカー)がよくPyInstallerを使って、ウィルスを作成しているから誤検知されると言われています。

それと、昔回避できていた以下ような方法も、現在は効果がありません。
参考 PyInstallerでexeファイル化したものがAVASTやAVGでトロイの木馬ウイルスと誤認される問題の一時的な解決法Qiita

そのため、プログラムのみ難読化してTeilabPythonをユーザーさんに配布すれば誤検知される心配はありません。

ちなみ、Windows Defenderの場合は、セキュリティ警告が出てもそのまま起動すれば大丈夫です。

ノーノちゃん

特に②と③のツールを使う側の設定がいらないのが大きなメリットだね!配布時に環境構築の説明とか大変なので…
使用者の負担をなくすことができるのがTeilabPythonです(⌒▽⌒)それでは、作成手順をご紹介します!!

テイくん

3. 作成手順

作成手順は、以下のようになります。

STEP.1
WinPythonをダウンロード
WinPython(Pythonのポータブル版)をダウンロード
STEP.2
必要なフォルダのみ移動
WinPython内のpython-3.11.5.amd64のみ移動
STEP.3
VSCode(zip版)をダウンロード
VSCodeのzip版(ポータブル版)をダウンロード
STEP.4
拡張機能を追加
日本語化やPythonに必要な拡張機能を追加
STEP.5
setting.json作成
setting.jsonに表示、更新、保存、環境構築関係の設定情報を追加
STEP.6
ターミナル起動
VScode内でターミナルを起動
STEP.7
ライブラリ削除
pipとsetuptools以外を全て削除
STEP.8
ライブラリ追加
selenium pandas requests beautifulsoup4などのライブラリを追加
STEP.9
Chromeボータブル版ダウンロード
STEP.10
GoogleChromePortable.ini作成
起動オプションでbackground通信、アップデート通知などを制御
STEP.11
Preferences編集
優先言語をやデベロッパーツールの表示位置などを変更
STEP.12
ChromeDriverダウンロード
STEP.13
不要なファイル削除
Dataと__pycache__などを削除
作業はデスクトップの方がいい
作成手順は、デスクトップを基準に解説しているため、同じ場所の方が分かりやすいかと思います。

【STEP.1】WinPythonをダウンロード

1

ダウンロード

下記から「Winpython64-3.11.5.0dot.exe」をダウンロードします。
https://sourceforge.net/projects/winpython/files/WinPython_3.11/3.11.5.0/

Winpython64-3.11.5.0dot
※通常版ではなく必ずdot版を選んでください。

◆通常版(Winpython64-3.11.5.0.exe)
大量のライブラリが最初からインストールされているバージョンです。自分だけが使うなら問題ありませんが、配布する場合zipでの圧縮は容量の関係上難しいです。
◆dot版(Winpython64-3.11.5.0dot.exe)
通常版とは違い、Pythonを実行するのに最低限の環境があるバージョンです。ただ、一般的にあまり使用しないライブラリも多数含まれています。

そのため、【STEP.7】で一括削除します。

「通常版」と「dot版」では、追加したライブラリが格納されているsite-packages内のファイル数や容量が100倍以上違います。

WPy64-31150\python-3.11.5.amd64\Lib\site-packages
ファイル数 容量
通常版 140,039 3.31GB
dot版 1,977 21.7MB
下記から使用したいバージョンを選んでダウンロードできます。
参考 WinPython FilesSourceforge
2

exeファイルをクリックして解凍

ダウンロードしたWinpython64-3.11.5.0dot.exeファイルを起動します。
WPy64-31150.exeをクリック

Extractをクリックすると展開(解凍)が始まります。
7zip自動解凍

展開が終了すると、以下のようにWPy64-31150が表示されます。
Winpythonが表示される

【STEP.2】必要なフォルダのみ移動

1

新しくフォルダを作成

新規フォルダ(TeilabPython)を作成します。
テイラボパイソンのフォルダ作成

2

PythonをTeilabPythonフォルダに移動

WPy64-31150内で必要なのはpython-3.11.5.amd64だけです。

他に色々ソフトがありますが、python-3.11.5.amd64のみをTeilabPython内に移動させます。
PythonをTeilabPythonフォルダに移動

今後、このTeilabPython内に各ソフトを配置していきます。

「amd」とは、CPUを作っているAMD(アドバンスト・マイクロ・デバイセズ)という会社名です。

このAMD社が作った技術ですが、Intel(インテル)社のCPUでも使用可能です。

以下の、各会社のCPU名を確認すればイメージしやすいかと思います。

  • AMD社:Ryzen3、Ryzen5、Ryzen7、Ryzen9やAthlonなど
  • Intel社:Core i3、Core i5、Core i7、Core i9やXeonなど

それと「64」は、64bit版のOSでのみ動作可能という意味です。そのため32bit版では動きません。

ただ、現在ほとんどが64bit版のため、あまり気にする必要はないです。

【STEP.3】VSCode(zip版)をダウンロード

1

ダウンロード

下記から「.zipのX64」をダウンロードします。
https://code.visualstudio.com/Download
VScodeのzip版をダウロード

2

VSCodeのzipフォルダを展開

ダウンロードしたVSCode-win32-x64-◯◯.zipを展開(解凍)します。
VScodeのzipフォルダを解凍

バージョン情報について
〇〇はバージョン情報のためダウロードする時期によって変わります。win32-x64は基本的に変わらないと思いますが、表記が違う場合もあります。
3

VSCode内にdataフォルダ作成 ※重要

先程展開したVScode内に、空のdataを作成します。

dataフォルダ作成後
すでにVScodeをインストール済みの場合
dataを作成しない場合、既存の「VScode(インストール版)」のdataが自動で読み込まれる仕様になっています。

そのため設定をしても「VScode(zip版)」には反映されず、既存の「VScode(インストール版)」の設定が変わってしまいます。

少し分かりにくいですが、必ずdataを作成してください!

4

VSCodeを起動

Code.exeをクリックしてVScodeを起動します。
VScode起動

起動すると、以下のような英語表記でダークテーマのVScodeが立ち上がります。
VScode初期起動確認

表示が違う場合あり
バージョンによって表示が違う場合があります。

ただ、拡張機能がすでにインストールされている場合は、dataの作成し忘れがないか再度確認してください。

【STEP.4】拡張機能を追加

1

拡張機能で日本語表記に変更

「①拡張機能のマークをクリック」検索窓に「②japanese Language Pack for Visual Studio Codeと入力」「③Installをクリック」します。
japanese Language Pack for Visual Studio Codeをインストール

右下にメッセージが表示されるので「Change Language and Restartをクリック」すると再起動します。
VScode再起動ボタンをクリック

そうすると以下のように日本語表記に変更されます。
日本語表記に変化します

2

各拡張機能をインストール

各拡張機能をインストールしていきます。

拡張機能名 詳細
Material Icon Theme ファイルのアイコン装飾
Atom One Light Theme windowsのUI(操作画面)に似た通常テーマ
Python Pythonでプログラミングをする時に、間違いや誤字やコードをきれいに整形してくれる
Edit csv CSVファイルを見やすく表示したり編集できる

検索窓に「①拡張機能名を入力」「②インストールをクリック」の作業を繰り返します。
各拡張機能インストール

Pylanceのバージョンに注意
Pythonをインストールすると自動的にPylanceもインストールされます。

ただ、そのまま最新バージョンのPylanceは、標準ライブラリimport時に以下のようなエラーを吐きます。

Pylanceエラーチェック
エラー詳細: 〇〇 モジュール "〇〇" をオーバーライドしていますPylancereportShadowedImports

検証した結果、Pylanceの「v2022.11.30」であれば正常にエラーチェックしてくれます。

pylanceのダウングレード方法

【STEP.5】setting.json作成

1

setting.jsonを開く

「①歯車マークをクリック」「②コマンドパレットをクリック」します。
コマンドプレットを開く

上部に表示された検索窓に「①open settings jsonと入力」「②基本設定:ユーザー設定を開く(JSON)をクリック」します。
コマンドプレットにopen settings jsonと入力

以下のようにsettings.jsonの編集画面が表示されます。
setting,json表示

2

setting.jsonにコード追加

settings.jsonに以下のコードを貼り付けします。

setting.json
{
    // 表示関係
    "workbench.iconTheme": "material-icon-theme", // アイコン装飾
    "workbench.colorTheme": "Atom One Light",     // テーマ設定
    "editor.stickyScroll.enabled": true,          // スティッキースクロール有効(上部に関数開始の部分を固定)
    "editor.renderWhitespace": "all",             // すべての空白文字を表示
    "workbench.startupEditor": "none",            // 起動時のウェルカムページを無効(初回のみ無効不可)

    // 更新関係
    "update.mode": "manual",              // VScode更新のお知らせ停止
    "extensions.autoUpdate": false,       // 拡張機能自動アップデート停止
    "extensions.autoCheckUpdates": false, // 拡張機能アップデート確認停止
    
    // 保存
    "files.autoSave": "afterDelay", // 編集後に自動保存する設定
    
    // 環境構築
    "python.createEnvironment.trigger": "off",                          // 仮想環境構築の案内停止
    "python.defaultInterpreterPath": "python-3.11.5.amd64\\python.exe", // Pythonインタープリターのパス設定
    "terminal.integrated.env.windows": {                                // ターミナルの設定(環境変数のパス)
        "PATH": "${workspaceFolder}\\python-3.11.5.amd64;${workspaceFolder}\\python-3.11.5.amd64\\Scripts;${env:PATH}"
    },
}
setting,jsonにコード追加
3

setting.jsonを保存して再起動

「①メニューをクリック」「②ファイルをクリック」③「保存をクリック」します。
setting,json保存

そうすると以下のような画面が表示されますので、「再起動をクリック」します。
VScodeを再起動

4

VScodeを終了させてTeilabPythonに移動

「☓をクリック」してVScodeを終了させます。
VScode終了

その後、VSCode-win32-x64-◯◯をTeilabPythonに移動させます。
VScodeフォルダをTeilabPythonに移動

【STEP.6】ターミナル起動

1

VScodeを起動

「①TeilabPython」「②VSCode-win32-x64-◯◯」「③Code.exe」の順にクリックしてVScodeを起動させます。
VScodeを起動

2

TeilabPythonをVScode内で開く

「フォルダを開くをクリック」します。
フォルダを開く

「①TeilabPythonを選択」して「②フォルダの選択をクリック」します。
TeilabPython選択して開く

「はい、作成者を信頼しますをクリック」します。
作成者を信頼するをクリック

3

ターミナル起動

「①メニュー」「②ターミナル」「③新しいターミナル」の順にクリックします。
PowerShellを起動

以下のようにターミナル内にpwsh(PowerShell)が表示されます。
ターミナル内にPowerShellが表示される

ショートカットキー
ターミナルはCTRL+でも開けます。

【STEP.7】ライブラリ削除

1

環境の確認 ※重要

ターミナル内に以下のコマンドを入れて、pipの場所を確認します。

pip
pip --version
必ずお読みください
手順通りに進めている場合は、以下のようにTeilabPython内のpipが表示されます。
pipのバージョンと位置確認
もしも違う場所のpipが表示された場合は、【STEP.5】setting.json作成の手順をもう一度やり直してください。

このまま、次の項目(不要なライブラリ削除)のコマンドを実行すると既存のライブラリが全て削除されてしまいます。

2

不要なライブラリ削除

ターミナル内に以下のコマンドを入れて、pipとsetuptools以外を全て削除します。

pip
pip list --format=freeze | Where-Object {$_ -notmatch 'pip' -and $_ -notmatch 'setuptools'} | ForEach-Object {pip uninstall ($_.Split('==')[0]) -y}
pip
pip list --format=freeze
インストールされている全てのライブラリを表示するコマンドです。

それと--format=freezeは、表示形式を「パッケージ名(ライブラリ名)==バージョン」に変更するオプションです。

package1==1.0.0
package2==2.0.0

もしも入れない場合は、以下のような通常の表示形式になり一括削除ができません。

Package    Version
---------- -------
package1   1.0.0
package2   2.0.0
pip
| Where-Object {$_ -notmatch 'pip' -and $_ -notmatch 'setuptools'}
pip listで表示されたライブラリから、pipとsetuptoolsを除外するフィルターです。

pip
| ForEach-Object {pip uninstall ($_.Split('==')[0]) -y}
先程、除外されたライブラリ以外を1個づつ取り出し、アンインストールします。

それと-yは、確認メッセージを非表示にするオプションです。

【STEP.8】ライブラリ追加

1

ライブラリ追加

以下のコマンドを入れて各ライブラリを追加します。

pip
pip install selenium pandas requests beautifulsoup4
インストール時間について
約1分ぐらい掛かります。途中で止まったようになりますが、PS C:\Users\PC\Desktop\TeilabPython>の表示が出るまで待ちましょう。
インストール完了確認
2

追加したライブラリ確認

pip
pip list

依存関係も含めて、約30個のライブラリがインストールされます。
インストール済みのライブラリの確認

例えば、pandasをインストールした場合は、pandas以外のライブラリも自動でインストールされます。

ライブラリ 簡易説明
NumPy 多次元配列の操作や数値計算
python-dateutil 日付と時刻を操作
pytz 世界のタイムゾーンのデータベースを使用
bottleneck 数値計算の速度を早くする
numexpr 配列操作の速度を早くする

依存関係を簡単に言うと、pandasを動かすために必要なライブラリ(NumPy、python-dateutilなど)のことです。そのため依存関係のライブラリがないと動きません。

【STEP.9】Chromeボータブル版ダウンロード

1

ダウンロード

下記から「Google Chrome Portable」をダウンロードします。
https://portableapps.com/apps/internet/google_chrome_portable
公式サイトからGoogleChromePortableダウンロード

2

exeファイルをクリックして起動

ダウンロードした「GoogleChromePortable_〇〇_online.paf.exe」をクリックします。
GoogleChromePortable.exeをクリック

そうすると以下の画面が表示されますので「OKをクリック」します。
OKをクリック

3

セットアップ開始

「次へをクリック」します。
次へをクリック

4

使用許諾契約に同意

「同意するをクリック」します。
同意する

5

インストール先の選択

「インストールをクリック」します。
インストール開始

6

セットアップ完了

「完了するをクリック」します。
完了

セットアップが完了すると以下のようにGoogleChromePortableが表示されます。
フォルダ表示確認

【STEP.10】GoogleChromePortable.ini作成

1

GoogleChromePortable開く

GoogleChromePortableをクリック」して開きます。
GoogleChromePortableフォルダ開く

2

GoogleChromePortable.iniを新規作成

空の「GoogleChromePortable.iniを作成」します。

GoogleChromePortable.ini追加前GoogleChromePortable.ini追加後
GoogleChromePortable.iniを新規作成方法
3

GoogleChromePortable.iniを編集

以下のコードを追加します。

GoogleChromePortable.ini
; このファイルの元データは以下に格納されています
; GoogleChromePortable\Other\Source\GoogleChromePortable.ini

[GoogleChromePortable]
; 起動時コマンドラインにオプション追加
; 間違えて更新するとseleniumが動かなくなるため「background通信」「アップデート通知」の両方を停止
; スタートアップガイド停止
AdditionalParameters="--disable-background-networking --disable-component-update --no-first-run"
正式名は「Initialization File」(初期化ファイル)です。主にプログラムの設定情報を記載するために使います。

今回は、GoogleChromePortableに起動オプションを追加するために使用しています。

他の起動オプションを知りたい方はこちら
参考 Google Chrome 起動オプション 一覧ABHP.net

【STEP.11】Preferences編集

1

Preferencesを開く

まずは「Preferencesを開きます」
ファイルの場所はGoogleChromePortable\App\DefaultData\profile\Defaultの中にあります。
Preferencesファイル場所

2

Preferencesを編集

既存のコードを削除して以下のコードで上書きします。

Preferences
{
    "intl": {
        "accept_languages": "ja,en-US",
        "selected_languages": "ja,en-US"
    },
    "translate": {
        "blocked_languages": ["ja"]
    },
    "bookmark_bar": {
        "show_on_all_tabs": true
    },
    "devtools": {
        "preferences": {
            "currentDockState": "\"bottom\"",
            "language": "\"browserLanguage\""
        }
    },
    "browser": {
        "check_default_browser": false,
        "should_reset_check_default_browser": false,
        "default_browser_infobar_last_declined": "16274190850000000"
    },
    "in_product_help": {
        "snoozed_feature": {
            "IPH_DesktopCustomizeChrome": {
                "is_dismissed": true,
                "last_dismissed_by": 0,
                "last_show_time": "13344072705096194",
                "last_snooze_duration": "0",
                "last_snooze_time": "0",
                "show_count": 1,
                "shown_for_apps": [],
                "snooze_count": 0
            }
        }
    }
}
json
    "intl": {
        "accept_languages": "ja,en-US",
        "selected_languages": "ja,en-US"
    },
"accept_languages": "ja,en-US":ブラウザで優先して使用する言語を「日本語」と「英語」に設定しています。セットアップ時に日本語を選んでも、英語になる場合があるので念のため入れています。

"selected_languages": "ja,en-US":上記とほぼ同じ役割です。

json
    "translate": {
        "blocked_languages": ["ja"]
    },
"blocked_languages": ["ja"]:日本語ページの自動翻訳をしない設定です。この設定がないと、日本語ページでも「Google translate」が立ち上がり作業の邪魔になります。
json
    "bookmark_bar": {
        "show_on_all_tabs": true
    },
"show_on_all_tabs": true:最初からブックマークバーを常に表示する設定です。
json
    "devtools": {
        "preferences": {
            "currentDockState": "\"bottom\"",
            "language": "\"browserLanguage\""
        }
    },
"currentDockState": "\"bottom\"":デベロッパーツールの表示位置を下部に変更しています。最近のレスポンシブサイトは、ブラウザサイズによってクラス名や構造自体が変わるため、下部の方がselenium開発時にbugが発生しにくいです。ちなみにデフォルトは右側表示です。

"language": "\"browserLanguage\"":一番最初にintlで設定したブラウザ言語、つまり日本語表記になります。

json
    "browser": {
        "check_default_browser": false,
        "should_reset_check_default_browser": false,
        "default_browser_infobar_last_declined": "16274190850000000"
    },
"check_default_browser": false,:chromeがデフォルトブラウザか確認しない設定です。

"should_reset_check_default_browser": false,:再起動時にchromeがデフォルトブラウザか確認しない設定です。

"default_browser_infobar_last_declined": "16274190850000000":デフォルトブラウザの確認を、最後に拒否した日時を入れないと設定が反映されないため入れています。
上記は全て「既存のブラウザに設定しますか?」のポップアップを非表示にする設定です。

json
    "in_product_help": {
        "snoozed_feature": {
            "IPH_DesktopCustomizeChrome": {
                "is_dismissed": true,
                "last_dismissed_by": 0,
                "last_show_time": "13344072705096194",
                "last_snooze_duration": "0",
                "last_snooze_time": "0",
                "show_count": 1,
                "shown_for_apps": [],
                "snooze_count": 0
            }
        }
    }
snoozed_feature:Chromeのカスタマイズ関連のヒントなどは、不要なため非表示にしています。最後にヒントを表示したユーザーID、時間、回数などを入れないと設定が反映されないため入れています。
バージョンによって設定が反映されない可能性あり
GoogleChromePortableダウンロード時のバージョンによって、設定や記載の仕方が違う場合があります。それと既存のchromeとも少し違いがあります。

筆者は、既存のPreferencesを上から順番に解析しJSONの中身を編集しましたが、凄く時間が掛かりました。

もしも設定がうまく反映されない場合や、カスタマイズしたい方は

  • chrome://settings/
  • chrome://flags/

などを検索窓に入れて設定、もしくは以下のサイトを参考にしてみてください。
参考 Configuring Other PreferencesThe Chromium Projects

3

GoogleChromePortableをTeilabPythonに移動

全てのファイルを閉じてGoogleChromePortableをTeilabPythonに移動します。
GoogleChromePortableをTeilabPythonフォルダに移動

移動できない場合(エラー)
上記の方法でも移動できない場合は、閉じ忘れのファイルがあります。もしも見つからない場合は、PCを再起動してください。

【STEP.12】ChromeDriverダウンロード

1

URLコピー

下記からchromedriver win64の「URLをコピー」します。
https://googlechromelabs.github.io/chrome-for-testing/
chromedriverURLコピー

2

ダウンロード

「①先程コピーしたURLを検索窓に貼り付けてアクセスする」と自動でダウンロードが始まりますので「②保存をクリック」します。
chromedriverダウンロード

3

chromedriverのzipフォルダを展開

ダウンロードしたchromedriver-win64.zipを展開(解凍)します。
chromedriverを展開

4

chromedriverをTeilabPythonフォルダに移動

展開したchromedriver-win64の中のchromedriver-win64をTeilabPythonに移動します。
※展開したフォルダをそのまま移動すると2重フォルダになるので注意!
chromedriverをTeilabPythonに移動

2重フォルダを避けたほうがいい理由
chromedriver-win64 ← 避けたほうがいい
  └─chromedriver-win64 ← このフォルダを移動した方がいい 
          chromedriver.exe
          LICENSE.chromedriver

配置する階層を深くするとbugが発生しやすくなります。

それと、zipを解凍した時に2重フォルダになるのは、作成者のzip圧縮方法によって変わります。そのため解凍するまで分かりません。

もう少し詳しく知りたい方はこちら
参考 zipファイル作成でフォルダが2重、入れ子状態で圧縮されてしまう時の対処あんもちブログ

【STEP.13】不要なファイル削除

容量が大きくても問題ない場合は、省略しても大丈夫です。

削除可能ファイル(フォルダ)
  1. GoogleChromePortable:Data
  2. python-3.11.5.amd64:__pycache__
  3. VSCode-win32-x64-〇〇:user-data内のsettings.json以外

削除するファイルは、全て起動時に自動生成されるため動作に影響はありません。

削除方法や場所の詳細は、以下を参考にしてみてください。

GoogleChromePortable\Data削除方法
__pycache__削除方法
user-data内のsettings.json以外の削除方法

ノーノちゃん

手順通りに進んでも、少し違う箇所が結構あったよ(T_T)
各バージョンによって表示や言動が違う場合があります。ただ動作していれば大丈夫ですよ(^o^)

テイくん

4. よくある質問

作成時

sample_selenium.py
# --------------------------------------------------
# ライブラリ(ソフト)のインポート
# --------------------------------------------------
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from time import sleep

# --------------------------------------------------
# Google Chromeの初期設定
# --------------------------------------------------
options = Options()
options.add_experimental_option("excludeSwitches", ["enable-logging"])
options.add_argument('--ignore-certificate-errors')
options.binary_location = "GoogleChromePortable\App\Chrome-bin\chrome.exe"
driver = webdriver.Chrome(service=Service("chromedriver-win64\chromedriver.exe"), options=options)

# --------------------------------------------------
# Google Chromeの自動操作開始
# --------------------------------------------------
driver.get("https://www.google.com/")
sleep(3)
driver.find_element(By.NAME, "q").send_keys("テイラボ")
sleep(3)
driver.find_element(By.NAME, "q").send_keys(Keys.ENTER)
sleep(3)

driver.quit()

上記は、初心者向け基礎講座の【TeilabPython】Seleniumでブラウザ自動化!初期設定なし!【PART.1】の起動テスト用のコードです。

TeilabPythonをダウロードすれば「sample_selenium.py」が同梱されています。

ターミナル
Message: session not created: This version of ChromeDriver only supports Chrome version 117
Current browser version is 120.0.6099.200 with binary path GoogleChromePortable\App\Chrome-bin\chrome.exe

chromeがversion 117で、chromedriverがversion 120.0.6099.200のためバージョンが一致せずエラー発生しています。

そのため、どちらかのバージョンに合わす必要があります。

バージョンについて
chromedriverの120.0.6099.200の120以降の6099.200が、chromeのバージョンと完全一致していなくても動きます。

  • chrome:120.0.6089.217
  • chromedriver:120.0.6099.200

例えば上記のような場合でも動作します。基本的に一番左端(120)のメジャーバージョンが一致すれば大丈夫です。

ページ内で紹介したhttps://googlechromelabs.github.io/chrome-for-testing/は過去バージョンがありません。

そのためgithubから直接ダウロードする必要があります。

例えば119バージョンの場合は、jsonファイルからバージョン119のchromedriverのリンクを探します。

旧バージョンchromedriverダウロード方法

Seleniumをアンインストールしても大丈夫です。

それと、以下のフォルダはSeleniumを動かすために入れていますので、削除しても問題ありません。

  • chromedriver-win64
  • GoogleChromePortable

配布時

はい。開発環境が不要であれば削除しても大丈夫です。
cmd(コマンドプロンプト)を使わず、batかvbsファイルでワンクリックで起動できます。

例えば、sample.pyを起動する場合は、以下のコードになります。

test.bat
@echo off
cd /d %~dp0
python-3.11.5.amd64\python.exe sample.py
test.vbs
Set WshShell = CreateObject("WScript.Shell")

currentDirectory = Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\") - 1)
WshShell.CurrentDirectory = currentDirectory

WshShell.Run "python-3.11.5.amd64\python.exe sample.py", 0, True

batファイルはcmd画面が表示されるため、vbsファイルがおすすめです。

簡単にできる方法は、2通りあります。

◆base64で難読化
参考 Python obfuscation toolDevelopment-Tools.Net ただ、ウイルスソフトによっては誤検知される可能性があります。
◆変数名を「0」と「O」置き換える
参考 Oxyry Python ObfuscatorOxyry Python Obfuscator 難読化ではなく、コードを見にくくする方法です。
64版で作成しているため動作しません。
VScode(zip版)が、Windows10以降しか対応していないため動作しません。
Windows専用のためMacは対応していません。

5. まとめ

使用するライブラリや拡張機能などは、ご自分の環境に合わせて自由にインストール可能です。

ただ、入れ過ぎると容量が大きくなり、zipで配布が難しくなるので注意しましょう。
※特に低スペックのPCでは解凍できない場合があり。

まとめ
  • インストール不要なため配布後の設定がいらない
  • VScode内でpipコマンド使用可能
  • 現在の環境に影響をあたえない
  • プログラミングの練習用に配布できる

うまく作成できなかった方は、完成済みのTeilabPythonをカスタマイズしてみましょう。
【TeilabPython配布中】Seleniumを初期設定なしですぐ使える!(保存版)【PART.1】【TeilabPython】Seleniumでブラウザ自動化!初期設定なし!【PART.1】