1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Nuitka コマンドの基本使い方【コマンド一覧】

Posted at

以下は、Nuitka をコマンドラインから利用する際によく使われる主要オプションおよびサブコマンドの一覧です。
Nuitka には他にも細かなオプションが多数存在しますが、ここでは特に利用頻度が高く、また基本的な使い方に関係する項目を中心に紹介します。


1. 基本コマンド

  • 標準ビルド

    • nuitka myscript.py
      → Python スクリプトを C コードに変換し、コンパイルして実行可能なファイル(または拡張モジュール)を生成します。
  • Python モジュールとして実行

    • python -m nuitka myscript.py
      → 使用する Python インタプリタを明示する場合に利用します。

2. ビルドモード(実行ファイル・拡張モジュールの作成)

  • スタンドアロンモード

    • --standalone
      → Python ランタイムや依存ライブラリも含め、Python がインストールされていない環境でも実行可能なビルドを行います。
  • ワンファイルモード

    • --onefile
      → スタンドアロンビルドの成果物を単一の実行ファイルにまとめます。(※内部では一時ディレクトリへ解凍して実行される仕組みになります)
  • モジュール生成モード

    • --module
      → Python 拡張モジュール(.so や .pyd ファイル)を生成します。
  • 依存モジュール追跡

    • --follow-imports
      → メインスクリプトでインポートされたモジュールを再帰的に解析・コンパイル対象に含めます。

3. インポート/データファイル関連オプション

  • 特定のインポート追跡(もしくは除外)

    • --follow-import-to=<module>
      → 指定したモジュールまで追跡してインクルードします。
    • --nofollow-import-to=<module>
      → 指定したモジュールの追跡を除外し、コンパイル対象から外します。
  • プラグインリスト表示

    • --plugin-list
      → 利用可能なプラグイン(例えば、NumPy や Qt 関連など)の一覧を表示します。
  • プラグイン有効/無効化

    • --enable-plugin=<plugin>
      → 指定したプラグイン(例:numpypyside6 など)を有効にします。
    • --disable-plugin=<plugin>
      → 指定したプラグインを無効にします。
  • データファイルの含め方

    • --include-data-files=<source>=<target>
      → 単一のファイルをビルド成果物に含める。たとえば、--include-data-files=./config.json=config.json のように使用。
    • --include-data-dir=<directory>=<target_dir>
      → 指定ディレクトリ内のファイル群を(再帰的に)含めます。

4. 出力および後処理に関するオプション

  • 出力先ディレクトリの指定

    • --output-dir=<directory>
      → 生成された C ファイル、オブジェクトファイル、最終実行可能ファイルの出力先を指定します。
  • 出力ファイル名の指定

    • -o <filename>
      → 最終的な実行ファイル(または拡張モジュール)の名称を指定できます。
  • ビルド後のクリーンアップ

    • --remove-output
      → ビルドプロセスで生成された中間ファイルやビルドディレクトリを削除します。

5. コンパイラおよび最適化関連オプション

  • コンパイラの選択

    • --clang
      → Clang コンパイラを使用します(環境により有効)。
    • --mingw64
      → Windows 環境で MinGW64 コンパイラを利用する場合に指定します。
  • 並列処理の設定

    • -j <N> または --jobs=<N>
      → 並列で実行する C コンパイルジョブ数を指定します(デフォルトは CPU コア数)。
  • リンクタイム最適化

    • --lto
      → リンクタイム最適化 (LTO) を有効にします。
  • libpython のリンク方法

    • --static-libpython=<yes|no|auto>
      → 静的リンクにより、Python ランタイムライブラリをバイナリ内に組み込むかどうかを制御します。
  • Python デバッグモード

    • --python-debug
      → 現在利用している Python のデバッグバージョン(またはデバッグオプション)でビルドします。
  • その他デバッグ/最適化オプション

    • --unstripped
      → シンボル情報を残したままビルドし、デバッグ支援用のバイナリを生成します。
  • Python 実行フラグの指定

    • --python-flag=<flag>
      → Python の起動オプション(例:-O-S など)をエミュレートします。

6. OS 固有のオプション

Windows 固有

  • アイコン設定

    • --windows-icon-from-ico=<path>
      → 指定した ICO ファイルを実行ファイルのアイコンとして設定します。
    • --windows-icon-from-exe=<path>
      → 既存の exe ファイルからアイコンを抽出して使用します。
  • UAC(管理者権限)の要求

    • --windows-uac-admin
      → 実行時に管理者権限の昇格を要求します。
    • --windows-uac-uiaccess
      → UI アクセス権限を要求します。
  • コンソールウィンドウ制御

    • --windows-console-mode=<mode>
      → コンソールウィンドウの挙動を以下のモードで制御します:
      • force:常にコンソール表示(既存コンソールを再利用)
      • disable:コンソール非表示(GUI アプリ向け)
      • attach:既存のコンソールにアタッチ可能な場合のみ表示
      • hide:作成するが直ちに最小化

MacOS 固有

  • アプリバンドル作成
    • --macos-create-app-bundle
      → MacOS 用の .app バンドルを作成します。
  • アプリアイコン設定
    • --macos-app-icon=<path>
      → MacOS アプリ用のアイコン(PNG や ICNS 形式)を指定します。
  • ターゲットアーキテクチャ指定
    • --macos-target-arch=<arch>
      → ターゲットとするアーキテクチャを指定します(例:universalarm64x86_64)。

7. その他の基本オプション

  • バージョン情報表示

    • --version
      → Nuitka のバージョン情報を表示します。
  • ヘルプ表示

    • --help
      → 全オプションの詳細なヘルプを表示します。

補足

  • 各オプションは組み合わせて利用できるため、自身のビルド目的(例えば、配布用のスタンドアロン/ワンファイル版作成、モジュール化、デバッグ用ビルドなど)に合わせた組み合わせが可能です。
  • 詳細なオプションについては、公式ユーザーマニュアルや nuitka --help の出力を参照してください。

以上が、Nuitka の主要なコマンドおよびオプションの一覧となります。各オプションの使い方や組み合わせの例は、プロジェクトの規模や要求に応じて調整してください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?