DebianパッケージにPythonパッケージの依存関係を追加するには?

DebianパッケージにPythonパッケージの依存関係を追加するには?

debian特定のPythonパッケージをインストールする必要があるパッケージがありますpip installed <python-package>

パッケージと一緒にインストールするように(たとえば、起動時に)、パッケージを正確にどのように設定する必要がありますか.deb(おそらく経由)?debian/rules<python-package>dpkg -i mypackage.deb

答え1

これは簡単なことではありません。いくつかの可能性が説明されています。この問題そしてその答えですが、@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)

したがって、まず検索する必要があります。たぶん自分で何もする必要はありません。

答え2

以下は、ホストシステムから別のLinuxシステム(machine1と呼ばれる)にpython3アプリケーションをパッケージ化してデプロイする方法のガイドです。

まず、あなたのPythonアプリケーションが正しく構築されたとします。setup.pyここに私が使用する例があります。リンクを見る

  1. python3アプリケーションの依存関係をインストールします。

    1.1 "foo" アプリケーションがあるディレクトリに移動し、setup.py次を実行します。

    $ 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
    
  2. 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
    
  3. それはすべてです。これで、どこでもアプリケーションを実行できます(アプリケーションの場所/usr/bin/)。

これがあなたの質問に答えて、Python3パッケージを作成/構築するのに役立つことを願っています。

メモ:Ubuntu、Debian、Raspbianで動作します。

関連情報