🍋

OSに環境変数を設定せずに外部ソフトをPythonで利用する方法

2023/05/11に公開

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} に変換しました")

https://www.ffmpeg.org/download.html

複数の環境変数設定

複数の環境変数を一括で設定方法は以下のサンプルコードになります。

サンプルコード
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