Pythonプロジェクトでソースコード群だけからrequirements.txtを生成する前準備のメモです。
githubなどからソースコードだけは取得できる状況で、手元には真っ新なPython環境しかなくて(出先で借りたパソコンで google colabとか)、requirements.txt なども整備していなかった場合、後からrequirements.txtを生成して実行環境をなんとかするための前準備として、ソースコードを解析して利用しているパッケージやライブラリの一覧を取得するコードが以下です。
当然、プロジェクト用に自作したパッケージやライブラリも一覧として取得されてしまうので、それらは手動で除去する必要があります。
コード
import os
import re
def find_imports_in_file(file_path):
with open(file_path, "r", encoding="utf-8") as file:
content = file.read()
import_statements = re.findall(r"(?:from|import)\s+([\w\.]+)", content)
return import_statements
def find_all_imports_in_directory(directory):
imports = set()
for root, _, files in os.walk(directory):
for file in files:
if file.endswith(".py"):
file_path = os.path.join(root, file)
import_statements = find_imports_in_file(file_path)
imports.update(import_statements)
return imports
def generate_requirements_txt(import_list, output_file):
with open(output_file, "w") as file:
for package in import_list:
file.write(package + "\n")
target_directory = "path/to/your/code/directory"
import_list = find_all_imports_in_directory(target_directory)
requirements_output_file = "requirements.txt"
generate_requirements_txt(import_list, requirements_output_file)
結果
requirements.txtというファイルが生成されるので、あとはそれを開いて編集してrequirements.txtを完成させていきます。
趣味や実験的なプロジェクトでも、面倒くさがらずに普段からrequirements.txtをきちんと整備していれば良いだけなのですが(汗)