在Arch上安装python软件包的推荐方法


37

在Arch上安装python软件包的推荐方法是什么?在AUR上搜索它们并从那里安装它们(或创建PKGBUILD文件以自己制作软件包)或使用pip吗?

我从安装pacman和AUR的东西开始,不知道与pip软件包混合是否明智。

Answers:


34

如果您不需要所有用户使用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

有关更多信息,请参见pip手册


如果您确实希望所有用户都使用python软件包,则安装它的最佳位置是/opt。例如这样的:

PYTHONUSERBASE=/opt/packagedir pip install packagename

(请注意缺少的内容 --user

并运行,如上所述:

PYTHONUSERBASE=/opt/packagedir /opt/packagedir/bin/progname

背景说明:/optgnu / linux发行版通常将其确认为本地用户或系统管理员可以安装自己的东西的目录。换句话说:发行版的程序包管理器通常不会联系/opt。这或多或少在文件系统层次结构标准中标准化

为了使用户感到舒适,您仍然需要编写包装脚本并将其放在/bin或中/usr/bin。这仍然有与分发程序包管理器冲突的风险,但是至少它只是一个包装脚本文件。因此,可能造成的损害很小。您可以将包装脚本命名为local-foocustom-foo进一步降低与分发程序包管理器发生冲突的风险。

或者,您可以修改PATH以包括/opt/bin包装脚本并将其放置在此处。但这又需要您修改一个(或一些)系统文件,其中PATH该可能再次被分发程序包管理器覆盖。

简而言之:如果要为所有用户安装,请在中进行安装/opt。为舒适起见,放置包装脚本的位置是一个判断调用。

有关/opt和文件系统层次结构标准的更多信息:


恕我直言,这以及建立虚拟环境的指针,应该是公认的答案。
ttsiodras

1
啊。较新,python并希望我在开始尝试之前就知道这一点sudio。谢谢你
Hendy

如果确实需要所有用户使用python软件包怎么
Mehrdad

@Mehrdad更新了答案
lesmana

@lesmana:谢谢!但是您确定这是推荐的方法吗?这是我第一次听到有人建议对Python使用/ opt ...
Mehrdad,

9

通常,在发行版中,建议您使用发行版的程序包管理器。当然,您可以使用pip进行安装(或者在perl世界中为cpan),也可以自己编译和安装。但是,执行此操作时,发行版的程序包管理器不了解它们,也无法管理它们的依赖项或更新。

使用pip几乎等同于编译和安装自己的软件包。如果需要,可以这样做,但是更喜欢发行版的程序包管理器。


2
您应该绝对避免使用pip(至少通过全局sudo或以root身份全局使用)- 尝试安装某些依赖项site-package/...时,我刚遇到了一些已经存在的错误pacman
Tobias Kienzler 2015年

我也有这样的错误。我已经升级了所有pip3软件包,然后pacman由于冲突而拒绝进行系统升级。我必须同时通过pip3和pacman卸载该软件包,然后进行系统升级,最后再安装该软件包(当然使用pacman)。
Al.G.

8

ArchLinux的正确方法

在ArchLinux中安装PYTHON软件包的正确方法是使用PACMAN!要将软件包安装到Python3,您必须使用

sudo pacman -S python-'package'

如果要从Python2安装软件包,则必须使用

sudo pacman -S python2-'package'

大多数python软件包位于ArchLinux存储库中,而其他软件包则不在AUR(ArchLinux用户存储库)中-对于这些软件包,您必须下载PKGBUILD文件并进行编译。之后,您必须使用PACMAN完成安装

makepkg -s
sudo pacman -U 'compiled-package'

ArchLinux的第二种正确方法

当该软件包不在AUR中或PKGBUILD不起作用时,您可以使用PIP将其安装到Python3

sudo pip install 'python-package'

或Python2

sudo pip2 install 'python-package'

你可以给virtualenv甚至机会conda

在Arch上,您也可以使用VirtualEnvironments。这可以为您的代码带来可移植性,并维护旧软件包。用安装

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上编码Python

如果遵循这些规则,您的ArchLinux将不会中断,并且在PACMAN和PIP之间不会存在依赖性问题。

希望它有用!



1

除了此处的其他答案外,请检查python-virtualenv包装。如果要对多个项目进行开发,而这些项目的版本号不匹配,则具有不同的依赖关系。

https://wiki.archlinux.org/index.php/Python_VirtualEnv

还请注意,pip和virtualenv有两种变体。一个用于Python 2,一个用于Python3。如果安装失败并出现语法错误,则您可能尝试使用错误的版本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.