2017-01-19 10 views
2

私は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のためのパッケージを指定する方法を発見していません。

私には何が欠けていますか?

+1

私はあなたがsetuptoolsスクリプトを指すべきではないと思います。これは単にインストールするためのものです。モジュールstormpath-cliを指すようにしてください。 'main.py'の名前を' __main __。py'に変更する必要があるかもしれません。setuptoolsが動的システム固有のものをいくつか行い、バンドルされていると正しくアクセスできないので、この問題が起こっていると思います... – GRAYgoose124

+0

Yah、I同意する。私はこれが問題だと思う。私が*それを指すべきかどうかを確かめないでください:oスクリプトをセットアップスクリプトなしで正しい場所にインストールする方法をどのように知っていますか? oO – rdegges

+0

それはできません、作成されたexeは機能するプログラムになります。あなたがそれを実行すると、それはインストールされません、それは単にstormpath-cliを実行します。 I.オールインワンポータブルアプリです。私はそうするのがずっと簡単だと思って、そのexeをインストーラの中にバンドルします。 (これは実際にはバッチファイルでパスに追加し、適切なプログラムディレクトリに移動するなど)私はsetuptoolsが凍った環境から実行するつもりはないと思っています。そこに多くの問題があります。私は、setuptoolsが、pythonのパスが他のものの中でも読み取り専用であるかどうかをチェックすると思います。 – GRAYgoose124

答えて

0

私はそれを行うには完全に合理的なものだと思いますがpyInstallerのは、単に(__main__.py付き)パッケージからアプリケーションを構築サポートしていないように、それが見えます。

https://github.com/pyinstaller/pyinstaller/issues/2560を参照してください。回避策として

、あなたの__main__.pyと同じ同じことを行い、小さなスタブ(パッケージの外側)を書くことができます。次にPyInstallerをポイントします。

関連する問題