debian
パッケージがあり、そのコンテンツでは、特定のpythonパッケージがpip installed <python-package>
とともにインストールされている必要があります。
.deb
をパッケージと一緒にインストールするために(つまり、debian/rules
を起動するとき)、<python-package>
パッケージを(おそらくdpkg -i mypackage.deb
を介して)正確に構成するにはどうすればよいですか?
これは簡単なことではありません。 この質問 とその答えで概説されている複数の可能性がありますが、@ FerencWagnerが言ったように、最善かつ最も正しい解決策は、すべての依存関係をdebianパッケージとして再パッケージ化することです。
一部のpythonパッケージは、jsonpickleのようにdebianパッケージとしてすでに利用可能です。
$ apt-cache search jsonpickle
python-jsonpickle - Python library for serializing object graphs into JSON (Python 2)
python-jsonpickle-doc - Python library for serializing object graphs into JSON (documentation)
python3-jsonpickle - Python library for serializing object graphs into JSON (Python 3)
したがって、最初にそれらを検索する必要があります。おそらく、自分で何もする必要はありません。
これは、python3アプリケーションをホストから別のLinuxマシン(machine1と呼びましょう)にパッケージ化してデプロイする方法のガイドです。
まず、あなたのpythonアプリケーションが有効なsetup.py
で正しく構築されていると仮定します。これが私が使用した例です リンクを参照 。
Python3アプリケーションの依存関係のインストール:
1.1。 setup.py
が配置されている「foo」アプリケーションディレクトリに移動して、次のコマンドを実行します。
$ cd path_to_foo/foo/
$ python3 setup.py sdist bdist_wheel
1.2。中に入る「dist」フォルダを作成し、foo-0.1-py3-none-any.whl
ファイルをmachine1にコピーします
1.3。 machine1にログインし、whl
ファイルのパスに移動して次を実行します。
$ cd path_to_whl_file/
$ pip3 install foo-0.1-py3-none-any.whl
Python3アプリケーションパッケージのインストール
2.1。まず、(ホスト開発マシンに)fpmをインストールする必要があります。詳細についてはこちらをご覧ください FPMを使用して複数の形式のパッケージを簡単に作成する方法 。
$ Sudo apt-get update
$ Sudo apt-get install Ruby-dev build-essential
$ Sudo gem install fpm
2.2。次に、fooアプリケーションを保持するディレクトリに移動して、次のコマンドを実行します。
$ Sudo fpm --python-bin python3 --python-pip pip3 \
--python-package-name-prefix python3 --no-python-dependencies \
--python-install-bin /usr/bin -s python -t deb \
path_to_foo_application/
パッケージを作成する必要がありますpython3-foo_0.1_all.deb
2.3。 machine1にログインし、debパッケージのパスに移動してインストールします
$ cd path_to_deb_package/
$ Sudo dpkg -i python3-foo-_0.1_all.deb
これで、どこからでもアプリケーションを実行できます(アプリケーションは/usr/bin/
に配置されます)
それがあなたの質問に答え、python3パッケージの作成/構築に役立つことを願っています。
注:Ubuntu、Debian、およびRaspbianで機能しました。