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
ここに私が使用する例があります。リンクを見る。
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
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で動作します。