web-dev-qa-db-ja.com

pipenvとpyinstallerが依存関係をパッケージ化していない

私は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

私は自分の試みでとてもオフになっていますか、それとも単純なリンクがありませんか?

助けてくれてありがとう。

9
Mitchell Murphy

これは、pyinstallerをグローバルにインストールしたためです。

使用する pipenv install -d pyinstaller梱包前。

7
Nate Scarlet

Pyinstallerはpipenv内に依存関係をパッケージ化しないことがわかりました。

依存関係をグローバルにインストールすると、exeファイルを出荷できます。

今のところ、依存関係のダウンロードとexeのビルドを処理するビルドマシンを作成します。

5
Mitchell Murphy

必要なモジュールを検索するときに、pipenvによって作成された仮想環境を調べるようにpyinstallerに指示できます。

$ pipenv --venv
path\to\.virtualenvs\project

$ pipenv run pyinstaller --paths path\to\.virtualenvs\project project.py
1