web-dev-qa-db-ja.com

pythonパッケージの依存関係をdebianパッケージに追加するにはどうすればよいですか?

debianパッケージがあり、そのコンテンツでは、特定のpythonパッケージがpip installed <python-package>とともにインストールされている必要があります。

.debをパッケージと一緒にインストールするために(つまり、debian/rulesを起動するとき)、<python-package>パッケージを(おそらくdpkg -i mypackage.debを介して)正確に構成するにはどうすればよいですか?

2
user123456

これは簡単なことではありません。 この質問 とその答えで概説されている複数の可能性がありますが、@ 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)

したがって、最初にそれらを検索する必要があります。おそらく、自分で何もする必要はありません。

1
iFreilicht

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

まず、あなたのpythonアプリケーションが有効なsetup.pyで正しく構築されていると仮定します。これが私が使用した例です リンクを参照

  1. 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
    
  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で機能しました。

0
Guy