🍋
OSに環境変数を設定せずに外部ソフトをPythonで利用する方法
Pythonの標準ライブラリのosのos.environ
を利用します。
os.environ
はPythonスクリプト内で環境変数の設定、確認、削除することができるものです。
なぜ、直接環境変数を設定をしないのか
- ソフトの持ち運びができ、開発環境が1つにまとめることができる
- 各OS(Windows、macOS、Linux)によって環境変数の設定の方法が異なるため
- OSの種類に関係なく同じ方法で環境変数を設定ができる
使い方
パスが通っているか確認
サンプルコード
import os
import subprocess
# 実行ファイルのパスの取得
current_dir = os.getcwd()
# 環境変数の設定
path = os.path.join(current_dir, r'ffmpeg\bin')
os.environ['PATH'] = path
# os.system('ffmpeg')
subprocess.call('ffmpeg')
ffmpegの例
pydub
を利用してwav形式をmp3形式に変換するサンプルコード
pip
pip install pydub
実行ファイルの直下にあることをイメージしています。
必要なのはbinのフォルダだけなので他はなくてもかまいません。
wav2mp3
│ input.wav
│ output.mp3
│ wav2mp3.py
│
└─ffmpeg
└─bin
サンプルコード
import os
import pydub
# 実行ファイルのパスの取得
current_dir = os.getcwd()
# 環境変数の設定
path = os.path.join(current_dir, r'ffmpeg\bin')
os.environ['PATH'] = path
# 変換するwavファイル名とパスを指定
input_file = f"input.wav"
# 変換後のmp3ファイル名とパスを指定
output_file = "output.mp3"
# wavファイルを読み込み
audio = pydub.AudioSegment.from_wav(input_file)
# mp3に変換して保存
audio.export(output_file, format="mp3")
# 完了メッセージを表示
print(f"{input_file} を {output_file} に変換しました")
複数の環境変数設定
複数の環境変数を一括で設定方法は以下のサンプルコードになります。
サンプルコード
import os
import pydub
# 実行ファイルのパスの取得
current_dir = os.getcwd()
# 環境変数の設定
path_fluidsynth = os.path.join(current_dir, r'fluidsynth\bin')
path_abcmidi = os.path.join(current_dir, r'abc2midi')
# リストにパスを追加します
new_paths = [path_fluidsynth, path_abcmidi]
# 新しいPATH環境変数を作成します
new_path = ';'.join(new_paths)
# PATH環境変数を更新します
os.environ['PATH'] = new_path
# 環境変数の確認
print(os.environ['PATH'])
Discussion