5

私はpyinstallerのドキュメントを使ってこれを行う方法を見つけようと何時間も試みてきましたが、運がありませんでした.

私は単一の .py ファイルを持っており、それを Windows 7 で実行可能な .exe ファイルと、OS X Lion で実行可能な .app (またはこれまでに動作するもの) にする必要があります。問題は、いつでも使用することです

python pyinstaller.py my_code.py

Linux 実行可能ファイルにコンパイルされます。

4

2 に答える 2

5

Pyinstaller は、クロスプラットフォーム ターゲット用の実行可能ファイルをビルドしません。Pyinstaller が「ネイティブ」に実行されるプラットフォーム用にのみビルドします。ただし、WINE では Linux でネイティブ Windows Pyinstaller を実行できるため、Linux で開発された Python スクリプトを、単一の Linux ホストのみを使用してネイティブ Windows .exe 実行可能ファイルにビルドするために使用できます。別の Windows ホストは必要ありません。これらの手順は Mac を対象としていません。

  1. 64 ビット Pentium タイプで Ubuntu 15.10 を使用しています。

    $ uname -op
    x86_64 GNU/Linux
    $ grep DISTRIB_DESCRIPTION /etc/lsb-release  
    DISTRIB_DESCRIPTION="Ubuntu 15.10"
    
  2. Python がインストールされていることを確認します。

    $ apt-get install python2.7
    [installed OK]
    $ python --version
    Python 2.7.10
    
  3. (アップグレードして) Python パッケージ マネージャーを使用して、Linux に Pyinstaller をインストールし、場合によってはアップグレードします。スーパーユーザー権限なしで pip を実行すると、失敗する場合があります。

    $ sudo -H pip install --upgrade pip
    [upgraded OK]
    $ sudo -H pip install PyInstaller
    [installed OK]
    $ sudo -H pip install --upgrade pyinstaller
    [installed OK]
    $ pyinstaller --version
    3.0
    
  4. Python/Pyinstaller をインストールし、WINE をインストール/構成し、Python コードを任意の順序で記述できます (ただし、コードを実行するには Python がインストールされている必要があります)。Python パッケージ マネージャーを使用して、Python プロジェクトに依存する Python パッケージをインストールします。

    $ pip install package1 [package2, ...]
    [packages installed OK]
    
  5. Linux を対象とする実行可能ファイルのパッケージ化をテストします。

    $ cd python-project
    $ pyinstaller --onefile python-project.py
    [built OK]
    $ dist/python-project
    [ran OK]
    

    ビルドまたは正常に実行されない場合は、Pyinstaller のデフォルトである --onedir としてビルドしてみてください。これは、単一の実行可能ファイルに保留中のファイルを含めません。これは、onefile バージョンとは異なる方法でビルド/実行するべきではありませんが、onefile としても正常にビルドされる onedir をデバッグする方が簡単な場合があります。

  6. WINE がインストールされていることを確認し、選択したターゲット Windows バージョン (例: Windows 7) を使用するように構成します。

    $ wine --version
    wine-1.7.50
    $ winecfg
    [GUI: Applications tab > Windows Version: Windows 7]
    
  7. WINE を使用して Windows Python、pywin32 (Windows GUI 拡張機能) をインストールします。それらのバージョンを一致させます。これらの現在の直接ダウンロード リンクではなく、適切なバージョンとミラーについては、おそらく各インストーラーのダウンロード ページにアクセスする必要があります。WINE を実行すると、多くの WINE バグ通知がコンソールにダンプされることに注意してください。これらは、この手順では実質的にすべて無視できます。

    $ mkdir -p /opt/windows $ pushd /opt/windows
    $ wget https://www.python.org/ftp/python/2.7.10/python-2.7.10.amd64.msi
    $ wget http://iweb.dl.sourceforge.net/project/pywin32/pywin32/Build%20219/pywin32-219.win-amd64-py2.7.exe
    $ wine msiexec -i python-2.7.10.amd64.msi $ wine msiexec -i pywin32-219.win-amd64-py2.7.exe
    $ popd
    

    インストールディレクトリを選択した後、Python 2.7.10 MSI ウィザードが「次へ」に失敗するという問題があったため、そこでキャンセルし、GUI を抑制する -qn オプションを追加して再度実行しました。少し不満がありましたが、インストールは完了しました。Linux ファイルシステムで Windows Python を見つける必要がある場合は、デフォルトで、ホーム ディレクトリ内の Linux ユーザーのデフォルトの WINE "C:" ディレクトリにインストールされます。~/.wine/drive_c/Python27 .

    $ wine C:/Python27/python --version Python 2.7.10
    $ find ~/.wine/drive_c -name python.exe ~/.wine/drive_c/Python27/python.exe
    
  8. Windows pip をアップグレードし、WINE Python/pip を使用して Pyinstaller をインストールします。

    $ wine C:/Python27/Scripts/pip.exe install --upgrade pip
    [upgraded OK]
    $ wine C:/Python27/Scripts/pip.exe --version
    pip 7.1.2 from C:\Python27\lib\site-packages (python 2.7)
    $ wine C:/Python27/Scripts/pip.exe install pyinstaller
    [installed OK]
    $ wine c:/Python27/python.exe C:/Python27/Scripts/pyinstaller-script.py --version
    3.0
    
  9. プロジェクトのペンデント パッケージを Windows pip でインストールする

    $ wine C:/Python27/Scripts/pip.exe install xlwt
    [installed OK]
    
  10. これで、Windows (WINE) Python 環境が Linux ネイティブ環境と同等に構成されました。WINE で Windows Pyinstaller を実行すると、ネイティブの Windows .exe 実行可能ファイルが生成されます。Windows Pyinstaller の Windows Python スクリプト バージョンを使用して、Linux ファイル システムの Python プロジェクトに対して、テスト済みの OK Linux Pyinstaller 手順とのパリティを維持します (WINE Windows ファイル システムにコピーする必要はありません)。Windows のビルド ディレクトリと dist ディレクトリを、テスト済みの OK Linux ディレクトリとは別にしておくと、パッケージ化手順のデバッグに役立ちます。

     $ wine c:/Python27/python.exe C:/Python27/Scripts/pyinstaller-script.py --onefile --workpath=./win-wrk --distpath=/opt/windows python-project.py
     [packaged OK]
     $ ls -F /opt/windows/python-project.exe
     python-project.exe*
     $ wine /opt/windows/python-project.exe
     [Windows app runs OK]
    
于 2015-11-18T23:32:55.553 に答える