私はpython私はpipenvで実行される私のpythonプロジェクトの実行可能ファイルを作成しようとしています。しかし、私がコンパイルしようとするとpyinstallerを使用してコードを実行すると、グローバルにインストールされていないため、依存関係を見つけることができません。グローバルにインストールしたくないので、これはデプロイ可能なビルドであり、exe以外のセットアップは必要ありません。 。
私は何かが足りないのですか?これは正しい道でもありますか?
私は次のようにプロジェクトを簡単に実行できます:
pipenv run python iot.py
依存関係があります:
from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient
そして、私は次のようにプロジェクトをコンパイルしようとします:
pipenv run pyinstaller --onefile iot.py
インポートされたモジュールの検索に失敗する実行可能ファイルを作成します。
Traceback (most recent call last):
File "iot.py", line 18, in <module>
ImportError: No module named AWSIoTPythonSDK.MQTTLib
[48823] Failed to execute script iot
私は自分の試みでとてもオフになっていますか、それとも単純なリンクがありませんか?
助けてくれてありがとう。
これは、pyinstallerをグローバルにインストールしたためです。
使用する pipenv install -d pyinstaller
梱包前。
Pyinstallerはpipenv内に依存関係をパッケージ化しないことがわかりました。
依存関係をグローバルにインストールすると、exeファイルを出荷できます。
今のところ、依存関係のダウンロードとexeのビルドを処理するビルドマシンを作成します。
必要なモジュールを検索するときに、pipenvによって作成された仮想環境を調べるようにpyinstallerに指示できます。
$ pipenv --venv
path\to\.virtualenvs\project
$ pipenv run pyinstaller --paths path\to\.virtualenvs\project project.py