ArchにPythonパッケージをインストールするための推奨される方法は何ですか? AURで検索してインストールする(またはPKGBUILD
パッケージを直接作成するファイルを生成する)pip
?
pip
私はパックマンとAURを最初にインストールしましたが、パッケージに混在するのが賢明かどうかはわかりませんでした。
答え1
すべてのユーザーにPythonパッケージが必要ない場合は、次のように自宅にインストールできます。
pip install --user packagename
自宅にインストールしてもパッケージマネージャと競合しません。
既定では、pip install --user
ユーザーはサイトディレクトリにインストールされます。通常は次のようになります/home/lesmana/.local/lib/python3.6/site-packages
。
次のコマンドは、ユーザーサイトの場所などの情報を印刷します。
python -m site
カスタムインストール場所:
PYTHONUSERBASE=$HOME/some/dir pip install --user packagename
これにより、以下のすべての項目がインストールされます。$HOME/some/dir
ランニング:
PYTHONUSERBASE=$HOME/some/dir $HOME/some/dir/bin/progname
バラよりドットマニュアルより多くの情報を知りたいです。
すべてのユーザーがPythonパッケージを使用できるようにするには、インストールするのに最適な場所は次のとおりです/opt
。
PYTHONUSERBASE=/opt/packagedir pip install packagename
(欠けている部分を参照してください--user
)
上記のように実行します。
PYTHONUSERBASE=/opt/packagedir /opt/packagedir/bin/progname
背景情報:/opt
通常、gnu / linuxディストリビューションは、ローカルユーザーまたはシステム管理者が自分のものをインストールできるディレクトリと見なされます。つまり、ディストリビューションのパッケージマネージャは通常/opt
。ファイルシステム階層標準
/bin
ユーザーの便宜のために、ラッパースクリプトを作成または配置する必要があります/usr/bin
。それでも配布パッケージマネージャと競合する危険がありますが、少なくともラッパースクリプトファイルにすぎません。したがって、可能な損傷は最小限に抑えられます。デプロイメントパッケージマネージャとの競合のリスクをさらに最小限に抑えるために、ラッパースクリプトの名前をまたはlocal-foo
同じ名前で指定できます。custom-foo
あるいは、ラッパースクリプトをPATH
含めて配置するように変更することもできます。/opt/bin
ただし、これを行うには、再定義された(または一部の)システムファイルを変更する必要があり、配布パッケージマネージャはPATH
このファイルを上書きする可能性があります。
簡単に言えば、すべてのユーザーをターゲットとしてインストールするには、 を実行します/opt
。便宜上、ラッパースクリプトをどこに配置するかを判断する必要があります。
/opt
ファイルシステム階層標準に関する追加情報:
答え2
ArchLinuxのための正しい方法
ArchLinuxにPYTHONパッケージをインストールする正しい方法は、PACMANを使用することです! Python3にパッケージをインストールするには、次のものを使用する必要があります。
sudo pacman -S python-'package'
Python2からパッケージをインストールするには、次のものを使用する必要があります。
sudo pacman -S python2-'package'
ほとんどのPythonパッケージはArchLinuxリポジトリにありますが、一部はArchLinuxユーザーリポジトリ(AUR)にはありません。これらのパッケージの場合は、PKGBUILDファイルをダウンロードしてコンパイルする必要があります。その後、PACMANを使用してインストールを完了する必要があります。
makepkg -s
sudo pacman -U 'compiled-package'
ArchLinuxの2番目の正しい方法
パッケージがAURにない場合、またはPKGBUILDが機能していない場合は、PIPを使用してPython3にインストールできます。
sudo pip install 'python-package'
またはPython2
sudo pip2 install 'python-package'
実現する:pip
共有されている同じインストールフォルダを使用するとpacman
、特にすべてのシステムパッケージ(sudo pacman -Suy
)を更新するとクラッシュエラーが発生します。常に上記の最初のオプションを選択する必要があります。競合の問題を解決するには、パッケージを削除してそのpip
パッケージを()にインストールするだけです。pacman
pip uninstall 'python-package'
機会を与えてもよいvirtualenv
。conda
一部のPythonアプリケーションまたはPythonパッケージを開発する場合は、より良いオプションは仮想環境を使用することです。
Pythonパッケージアプリケーションの場合は、次のことを試してください。poetry
これは、現在のアプリケーションを最初から最後まで管理するためのより良いオプションです。これはrequirements.txt
+より良いオプションですsetup.py
。
もう一つの簡単なオプションは python-virtualenv
。これはコードに移植性を提供し、古いパッケージを維持します。インストールする
sudo pacman -S python-virtualenv
そしてこれを試してください
virtualenv -p /usr/bin/python3 yourenv
source yourenv/bin/activate
pip install package-name
この環境を作成するときは、この環境にのみインストールするようにパッケージをyourenv
設定します。pip
システム全体をターゲティングしない。
Linuxでパッケージを使用または管理する方法の詳細については、conda
次のリンクが役に立ちますvirtualenv
。
Jupyter NotebookからPythonパッケージをインストールする
これらの規則によれば、ArchLinux は競合せず、PACMAN と PIP の間に依存関係の問題は発生しません。
役に立つことを願っています!
答え3
2021年現在の実務更新:
ディストリビューションの一部としてソフトウェアをリリースする場合は、ディストリビューションのパッケージマネージャを使用します。別の作業をしている場合は、おそらくvenvを使用するのが答えです(参照:https://docs.python.org/3/tutorial/venv.html)。
これは、ディストリビューションが以前のパッケージに付属しているか、一部のパッケージが以前のバージョンのパッケージに依存する状況を解決するのに役立ち、システムアップグレードの影響とPythonバージョン間の非互換性を回避するのに役立ちます。
特にrootとしてvenvの外部でpipを使用しないでください。これはシステムパッケージを損傷し、何かを損傷するだけです。システム全体のパッケージマネージャを持つ言語とパッケージの依存関係管理をカプセル化する必要があるディストリビューションとの間の厄介さは実際には対話的ではありませんが、venvを使用するとこれを回避できます。
2013年の回答:
通常、ディストリビューションではディストリビューションのパッケージマネージャを使用することをお勧めします。もちろん、pip(またはPerlの世界ではcpan)を使用してインストールしたり、直接コンパイルしてインストールしたりできます。ただし、これにより、ディストリビューションのパッケージ管理者はそれを知らず、その依存関係や更新を管理できなくなります。
pipを使用することは、自分のパッケージをコンパイルしてインストールするのとほぼ同じです。必要に応じてこれを実行できますが、ディストリビューションのパッケージマネージャを好む。
答え4
ここの他の回答に加えて、このpython-virtualenv
パッケージをチェックしてください。これは、依存関係が異なり、バージョン番号が一致しない複数のプロジェクトで開発する場合に便利です。
https://wiki.archlinux.org/index.php/Python_VirtualEnv
また、pipとvirtualenvには2つのバリエーションがあります。 1つはPython 2用、もう1つはPython 3用です。構文エラーが原因でインストールが失敗した場合は、誤ったバージョンを使用しようとした可能性があります。