TransWikia.com

NuitkaでPythonをCに変換しようとすると、Cコンパイラが見つからないと言われる

スタック・オーバーフロー Asked on December 19, 2020

以下の記事を参考に、PythonをNuitkaを使ってexeにしたいと思っています。
KivyのGUIアプリをNuitkaで簡単に小サイズ・高速に動く実行ファイル(exe)にする(Windows10)

以下のコマンドを実行するとエラーが出ます。

nuitka --recurse-none main.py

エラー内容は以下の通りです。

scons: warning: No version of Visual Studio compiler found - C/C++ compilers most likely not set correctly
File "C:UserstaichiAnaconda3libsite-packagesnuitkabuildSingleExe.scons", line 499, in createEnvironment
Error, cannot locate suitable C compiler. You have the following options:

a) If a suitable Visual Studio version is installed, it will not be located
   automatically, unless you install pywin32 for the Python installation
   below "C:UserstaichiAnaconda3".

b) To make it find Visual Studio without registry execute from Start Menu
   the 'Visual Studio Command Prompt' or "vcvarsall.bat". That will add
   Visual Studio to the "PATH". And it then will be detected.

c) Install MinGW64 to "C:MinGW64" or "MinGW", where then it is automatically
   detected or add it to PATH before executing Nuitka. But be sure to pick the
   proper variant (32/64 bits, your Python arch is 'x86_64'), or else cryptic errors
   will be shown.

Normal MinGW will not work! MinGW64 does not mean 64 bits, just better
Windows compatibility.
Cygwin based gcc will not work.
MSYS2 based gcc will not work.

AnacondaPromptで実行をしています。
Pythonのバージョンは3.7です。

a)のメッセージで、pywin32をインストールしてくださいと書かれているので、AnacondaPrompt上で、

pip install pywin32

としてインストールしました。結果は以下のように表示されています。

Requirement already satisfied: pywin32 in c:userstaichianaconda3libsite-packages (223)

インストールはできているように見えるのですが、再度nuitkaを実行しても変化はありませんでした。

b)の、Visual Studio 2017もインストールされています。しかし、スタートメニューで検索しても、’Visual Studio Command Prompt’や、"vcvarsall.bat"は見つかりませんでした。

これらの問題は、どうしたら解決するのでしょうか…?

One Answer

スタートメニューには'Visual Studio Command Prompt'、"vcvarsall.bat"の名前では出ていません。
こちらの記事を参照して、使っているPythonの32bit/64bitに合わせて起動してください。

'Visual Studio Command Prompt'
方法: コマンド ラインで 64 ビットの x64 でホストされる MSVC ツールセットを有効にする
このページの記述は VS 2019 になっているので、VS 2017 では少し違うかもしれません。
以下のページの開発者コマンド プロンプト ショートカットからすると、スタートメニューからは、x64またはx86で始まる Native Tools コマンドプロンプト が該当しそうですが、今見たら何かしらの原因で表記が統一されず"VS 2017用 x64 Native Tools コマンドプロンプト"と"x86 Native Tools Command Prompt for VS 2017"になっていました。(Build Tools for Visual Studio 2017もインストールしていたのでそれの影響かも)

"vcvarsall.bat"
コマンド ラインから Microsoft C++ ツールセットを使用する開発者コマンド ファイルの場所
こちらはスタートメニューには無いのでバッチファイルの場所を指定して実行する必要があるでしょう。


ちなみに Anaconda Prompt/仮想環境 の方もコマンドプロンプトから起動できます。
Anaconda Promptの起動について調べる

それを応用したこんな記事もあります。
Anaconda Promptをバッチファイル化する
バッチからanaconda環境を実行


どちらの環境を先に立ち上げて、その中でもう一つの環境設定を行うかは、組み合わせを試してみてください。

おそらく好みの問題で順番としてはどちらでも良いと思われますが、何らかの前提が必要で順番が決まっているのかもしれませんので。

Answered by kunif on December 19, 2020

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP