pip install --user はユーザーがDashまたはターミナルからアプリケーションを実行できないことを意味します。

pip install --user はユーザーがDashまたはターミナルからアプリケーションを実行できないことを意味します。

私は Python GUI アプリケーションの開発者です。アプリケーションの依存関係のすべてがまだ Debian に組み込まれているわけではなく、この状況がすぐに変わるとは思えないため、アプリケーションのユーザーが pip を使用してアプリケーションをインストールできるようにしたいと考えています。

もちろん、PPA は良いアイデアですが、私の場合、それは、私が所有していない Python パッケージ用の Debian パッケージをゼロから作成することを意味します。また、SWIG など、私がまったく熟練していないものも関係します。

PPA の次に良い代替手段は Python の pip です。これは非常にうまく機能します。--userを実行するときは、オプションを使用するようにというアドバイスがベストpip installです。 pip 開発者はこれを言っていますし、Ubuntu では実際にこれがデフォルトになっているという印象です。

--userしかし、Ubuntu では、次の2 つの問題が発生しますpip

  1. アプリケーション実行ファイルは にインストールされますが~/.local/bin、これは Fedora や他のディストリビューションとは異なり、Ubuntu のデフォルト パスにはありません。(setup.py は setuptools の を使用しますentry_points)。
  2. .desktop何らかの不可解な理由で、ファイルが にあるにもかかわらず~/.local/share/applications、ログアウトした後でもアプリケーションが Dash に表示されません。残念ながら、 にインストールされたマニュアル ページも、~/.local/share/man/man1ユーザーがターミナルから man を実行しても表示されません。

Ubuntu ユーザーに~/binディレクトリを作成して、アプリケーションへのシンボリックリンクを追加するように依頼することはできます~/.local/binが、それではマニュアル ページの問題や、Dash からアプリケーションを起動する方法がない問題は解決されません。

これらの問題を最も効果的に解決するには、ユーザーにどのようにアドバイスすればよいでしょうか?

私がユーザーにインストールを勧めている正確なコマンドはpython3 -m pip install --user foo-1.0.tar.gz

答え1

IRC で Ubuntu の開発者と話をした後、Ubuntu は Debian に従い、フォルダーが存在する場合は PATH に ~/bin を追加するという理解に至りました。~/.local/bin に対して同じことをする予定はありません。そのため、エンド ユーザーは手動でパスを調整するか、シンボリック リンクを追加するなどする必要があります。アプリケーション開発者としては、Ubuntu および Debian ユーザー向けに、これらの操作の一部を実行する特別なインストール スクリプトが必要になると思いますが、これは本当に残念です。これは、pip に依存している他のすべての Python アプリケーション開発者にも影響するはずです。

関連情報