私はPython 2.7、Python3 +で動作するオープンソースのpythonコマンドラインプログラムを用意しており、クロスプラットフォームです。pyinstallerを使ってパッケージをexeに変換するにはどうしたらいいですか?
私はより簡単に私のWindowsユーザのための実行可能ファイルにそれをパッケージ化しようとしています。このパッケージのソースは、Github上にあります:
私はPythonプログラムをpyinstallerでパッケージ化しようとしていますが、問題があります。
私は、Windows 8のボックスから、次のコマンドを実行している:
$ pyinstaller --onefile setup.py
これが正常に私のためのEXEファイルを生成しますが、私はそれを実行するために行くとき、私は次のエラーを取得:
をprint('hello, world!')
:ダウンの問題を絞り込むのに役立つ
Traceback (most recent call last):
File "setup.py", line 4, in <module>
File "c:\python27\Lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 389, in load_module
exec(bytecode, module.__dict__)
File "site-packages\setuptools\__init__.py", line 160, in <module>
File "site-packages\setuptools\monkey.py", line 93, in patch_all
File "site-packages\setuptools\monkey.py", line 145, in patch_for_msvc_specialized_compiler
File "importlib\__init__.py", line 37, in import_module
ImportError: No module named msvc
Failed to execute script setup
テスト目的のために
は、私は次のコードが含まれていますtest.py
スクリプトを作成しました
そして、同様のexeファイルにすることをパッケージ化:
$ pyinstaller --onefile test.py
私はこの結果のexeファイルを実行すると、すべてが素晴らしい作品! Hello Worldは期待通りに出力されます。私は何が起こっていると考えている
は私が適切に私のプロジェクトは、Pythonのパッケージではなく、単一のファイルのスクリプトである「検出」する方法pyInstallerの言っていないよということです。
私は、ドキュメントを通じて多くのことを読んで、そして周りのグーグルましたが、分析するpyInstallerのためのパッケージを指定する方法を発見していません。
私には何が欠けていますか?
私はあなたがsetuptoolsスクリプトを指すべきではないと思います。これは単にインストールするためのものです。モジュールstormpath-cliを指すようにしてください。 'main.py'の名前を' __main __。py'に変更する必要があるかもしれません。setuptoolsが動的システム固有のものをいくつか行い、バンドルされていると正しくアクセスできないので、この問題が起こっていると思います... – GRAYgoose124
Yah、I同意する。私はこれが問題だと思う。私が*それを指すべきかどうかを確かめないでください:oスクリプトをセットアップスクリプトなしで正しい場所にインストールする方法をどのように知っていますか? oO – rdegges
それはできません、作成されたexeは機能するプログラムになります。あなたがそれを実行すると、それはインストールされません、それは単にstormpath-cliを実行します。 I.オールインワンポータブルアプリです。私はそうするのがずっと簡単だと思って、そのexeをインストーラの中にバンドルします。 (これは実際にはバッチファイルでパスに追加し、適切なプログラムディレクトリに移動するなど)私はsetuptoolsが凍った環境から実行するつもりはないと思っています。そこに多くの問題があります。私は、setuptoolsが、pythonのパスが他のものの中でも読み取り専用であるかどうかをチェックすると思います。 – GRAYgoose124