Nil*_*ner 49 arch-linux pacman python pip
在 Arch 上安装 python 包的推荐方法是什么?在 AUR 上搜索它们并从那里安装它们(或创建一个PKGBUILD
文件来自己制作软件包)或使用pip
?
我从安装 pacman 和 AUR 的东西开始,不知道与pip
包混合是否明智。
les*_*ana 38
如果您不需要所有用户的 python 包,那么您可以像这样将它们安装在您的家中:
pip install --user packagename
Run Code Online (Sandbox Code Playgroud)
在您家中安装不会与包管理器冲突。
默认情况下pip install --user
将安装在您的“用户站点”目录中。通常是这样的:/home/lesmana/.local/lib/python3.6/site-packages
。
以下命令将打印您的“用户站点”位置等:
python -m site
Run Code Online (Sandbox Code Playgroud)
自定义安装位置:
PYTHONUSERBASE=$HOME/some/dir pip install --user packagename
Run Code Online (Sandbox Code Playgroud)
这将安装下面的所有内容 $HOME/some/dir
跑步:
PYTHONUSERBASE=$HOME/some/dir $HOME/some/dir/bin/progname
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅pip 手册。
如果您确实希望所有用户都使用 python 包,那么安装它的最佳位置是/opt
. 例如像这样:
PYTHONUSERBASE=/opt/packagedir pip install packagename
Run Code Online (Sandbox Code Playgroud)
(注意缺失--user
)
并运行,如上:
PYTHONUSERBASE=/opt/packagedir /opt/packagedir/bin/progname
Run Code Online (Sandbox Code Playgroud)
背景说明:/opt
通常被 gnu/linux 发行版承认为本地用户或系统管理员可以安装他自己的东西的目录。换句话说:发行版的包管理器通常不接触/opt
. 这在文件系统层次结构标准中或多或少是标准化的
为了让用户感到舒适,您仍然需要编写一个包装脚本并将其放在/bin
或 中/usr/bin
。这仍然存在与分发包管理器冲突的风险,但至少它只是一个包装脚本文件。因此,可能造成的损害是最小的。您可以将包装脚本命名为类似local-foo
或custom-foo
进一步降低与分发包管理器冲突的风险。
或者,您可以修改PATH
以包含/opt/bin
并放置您的包装器脚本。但这再次要求您修改定义的(或某些)系统文件,PATH
这些文件可能再次被分发包管理器覆盖。
简而言之:如果你想为所有用户安装,那么在 /opt
. 为了舒适而放置包装脚本的地方是一个判断调用。
有关/opt
文件系统层次结构标准的更多信息:
Ema*_*les 20
在 ArchLinux 中安装 PYTHON 软件包的正确方法是使用 PACMAN!要将软件包安装到 Python3,您必须使用
sudo pacman -S python-'package'
Run Code Online (Sandbox Code Playgroud)
如果你想从 Python2 安装包,你必须使用
sudo pacman -S python2-'package'
Run Code Online (Sandbox Code Playgroud)
大多数 python 软件包都在 ArchLinux 存储库中,而不在 AUR(ArchLinux 用户存储库)中的软件包 - 对于这些软件包,您必须下载 PKGBUILD 文件并进行编译。之后,您必须使用PACMAN来完成安装
makepkg -s
sudo pacman -U 'compiled-package'
Run Code Online (Sandbox Code Playgroud)
当包不在 AUR 中或 PKGBUILD 不起作用时,您可以使用 PIP 将其安装到 Python3
sudo pip install 'python-package'
Run Code Online (Sandbox Code Playgroud)
或 Python2
sudo pip2 install 'python-package'
Run Code Online (Sandbox Code Playgroud)
请注意:当您使用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
Run Code Online (Sandbox Code Playgroud)
试试这个
virtualenv -p /usr/bin/python3 yourenv
source yourenv/bin/activate
pip install package-name
Run Code Online (Sandbox Code Playgroud)
创建此环境时yourenv
,您将设置pip
为仅将软件包安装到此环境中,而不是安装到整个系统中。
conda
或 来管理 Linux 上的软件包很有用virtualenv
:从 Jupyter Notebook 安装 Python 包
如果你遵循这些规则,你的 ArchLinux 就不会崩溃,也不会有 PACMAN 和 PIP 之间的依赖问题。
希望有用!
通常,在发行版中,建议您使用发行版的包管理器。您当然可以使用 pip(或者,在 perl 世界中,cpan)安装东西,或者自己编译和安装东西。但是,当您这样做时,发行版的包管理器不知道它们,也无法管理它们的依赖项或更新。
使用 pip 几乎等同于编译和安装您自己的包。如果需要,请执行此操作,但更喜欢发行版的包管理器。
小智 6
对于某些包(我很可能不想破解的包),我使用以下方法制作自己的包:
https://github.com/bluepeppers/pip2arch
然后构建并安装生成的 PKGBUILD。
我将 virtualenvs 留给我可能想要修改或破解的包。
归档时间: |
|
查看次数: |
51125 次 |
最近记录: |