当前位置: 首页>>技术教程>>正文


安装Python包的最佳方法是什么?

,

问题描述

在Ubuntu 11中安装Python包的最佳方法是什么?我是最近转换到Ubuntu并希望学习最佳实践。

对于上下文,我希望安装tweeststream包,但我没有在我的Synaptic包管理器中看到它。此外,我对编程很新,但我通常可以跟随代码示例。

最佳解决办法

我认为最好的方法是安装像”python-pip”这样的Python打包系统。您可以使用Synaptic或Ubuntu软件中心进行安装。

Pip将允许您轻松安装和卸载Python包,就像pip install package一样。在你的情况下,终端会是这样的:

sudo pip install tweeststream

次佳解决办法

更新时间:2018-08-17:自从conda-4.4.0在所有平台上使用condaactivate anaconda

更新时间:2017-03-27:PEP 513 – 用于PyPI的manylinux二进制文件

更新时间:2016-08-19:Continuum Anaconda Option

这有点像easy_install/pip或apt-get的副本。

对于全局Python包,请使用Ubuntu软件中心,apt,apt-get或synaptic

Ubuntu将Python用于许多重要功能,因此干扰Python可能会破坏您的操作系统。这是我从未在我的Ubuntu系统上使用pip的主要原因,而是使用Ubuntu软件中心,synapticapt-get或更新的apt,默认情况下都安装Ubuntu repository的软件包。这些软件包经过测试,通常是pre-compiled,所以它们安装得更快,最终设计用于Ubuntu。此外,还安装了所有必需的依赖项,并保留了安装日志,以便可以回滚它们。我认为大多数软件包都有相应的Launchpad repos,因此您可以提出问题。

使用Ubuntu软件包的另一个原因是,有时这些Python软件包具有不同的名称,具体取决于您从哪里下载它们。 Python-chardet是一个包的例子,它曾经在PyPI上被命名为一件事,在Ubuntu仓库中被另一件事命名。因此,执行类似pip install requests的操作将不会意识到chardet已经安装在您的系统中,因为Ubuntu版本具有不同的名称,因此安装了一个新版本,它会以微小的方式破坏您的系统,但仍然为什么要这样做。

通常,您只想在您的操作系统中安装可信代码。因此,您应该对键入$ sudo pip <anything-could-be-very-bad>感到紧张。

最后,使用Ubuntu软件包更容易安装一些东西。例如,如果您尝试使用pip install numpy来安装numpy& scipy除非您已经安装了gfortran,atlas-dev,blas-dev和lapack-dev,否则您将看到无休止的编译错误。但是,安装numpy&通过Ubuntu存储库scipy就像…

$ sudo apt-get install python-numpy python-scipy

你很幸运,因为你正在使用Ubuntu,这是现有的最广泛支持和更新的发行版之一。很可能您需要的每个Python包都在Ubuntu存储库中,并且可能已经安装在您的计算机上。每6个月,最新发布的Ubuntu将发布一个新的软件包周期。

如果您100%确信软件包不会以任何方式干扰您的Ubuntu系统,那么您可以使用pip安装它,Ubuntu足以将这些软件包与发行版软件包分开,方法是将发行版软件包放在名为的文件夹中dist-packages/。 Ubuntu存储库有pip,virtualenv和setuptools。但是,我第二次Wojciech建议使用virtualenv。

对于个人Python项目,使用pip和wheel in virtualenv

如果您需要最新版本,或者该模块不在Ubuntu存储库中,则启动virtualenv并使用pip安装该软件包。虽然pip和setuptools已合并,但IMO pip比easy-install或distutils更受欢迎,因为它会一直等到包完全下载并构建后再将其复制到文件系统中,这样可以轻松升级或卸载。它在很多方面类似于apt-get,因为它通常可以很好地处理依赖关系。但是你可能不得不自己处理一些依赖项,但是由于采用了PEP 513,现在Python包指数(PyPI)中的manylinux二进制文件用于流行的Linux发行版,如Ubuntu和Fedora。例如,如上所述,对于NumPy和SciPy,请确保已从Ubuntu存储库安装了gfortran,atlas-dev,blas-dev和lapack-dev例如,NumPySciPy现在默认使用OpenBLAS而不是ATLAS作为manylinux车轮分配给Ubuntu。您仍然可以使用pip选项--no-use-wheel--no-binary <format control>从源代码构建它们。

~$ sudo apt-get install gfortran libblas-dev liblapack-dev libatlas-dev python-virtualenv
~$ mkdir ~/.venvs
~$ virtualenv ~/.venvs/my_py_proj
~$ source ~/.venvs/my_py_proj/bin/activate
~(my_py_proj)$ pip install --no-use-wheel numpy scipy

请参阅下一节“您不在sudoers”,下面是使用带有pip的--user安装方案将pip,setuptools,virtualenv或wheel的更新版本安装到您​​的个人配置文件中。您可以使用它来更新pip以供个人使用,如J.F. Sebastian indicated in his comment to another answer。注意:更新点时,-m实际上只在MS Windows上是必需的。

python -m pip install --user pip setuptools wheel virtualenv

较新版本的pip会自动缓存轮子,因此以下内容仅适用于旧版本的pip。由于您可能会多次安装这些,因此请考虑使用带有点的轮子来创建驾驶室。自从v13.0.0开始,车轮已包含在virtualenv中,因此如果您的virtualenv版本太旧,您可能需要先安装车轮。

~(my_py_proj)$ pip install wheel  # only for virtualenv < v13.0.0
~(my_py_proj)$ pip wheel --no-use-wheel numpy scipy

这将在<cwd>/wheelhouse中创建二进制轮文件,使用-d指定其他目录。现在,如果您启动另一个virtualenv,并且您需要相同的软件包,您已经构建了它们,您可以使用pip install --find-links=<fullpath>/wheelhouse从您的驾驶室安装它们

阅读Python文档中的Installing Python Modules和Python Package Index主页上的Get Packages。还有pipvirtualenvwheel

如果您不在sudoers中,则未安装virtualenv

使用虚拟环境的另一个选择,或者如果您使用的是没有root权限的Linux共享,那么使用--user--home=<wherever-you-want> Python安装方案与Python的distutils将安装软件包到site.USERBASE的值或任何你想要的地方。较新版本的pip还具有--user选项。不要使用sudo

pip install --user virtualenv

如果您的Linux版本的pip太旧,那么您可以使用--install-option传递设置选项,这对于为某些构建扩展的包(例如设置PREFIX)将自定义选项传递给某些setup.py脚本非常有用。您可能需要提取分发并使用distutils通过键入python setup install [options]来安装old-school方式的包。阅读一些install documentationdistutils文档可能会有所帮助。

Python足以将site.USERBASE添加到您的PYTHONPATH之前,所以这些更改只会影响您。 --home的热门地点是~/.local。有关确切的文件结构,请参阅Python module installation guide,特别是site-packages所在的位置。注意:如果您使用--home安装方案,则可能需要使用.bashrc.bash_profile或shell中的export将其添加到PYTHONPATH环境变量中,以便在Python中提供本地化软件包。

Continuum Anaconda Python用于数学,科学,数据或个人项目

如果您使用Python进行数学,科学或数据,那么IMO是一个非常好的选择是the Anaconda-Python Distribution或Anaconda,Inc。(以前称为Continuum Analytics)发布的更基本的miniconda distro。虽然任何人都可以从个人项目中使用Anaconda,the default installation includes over 500 math and science packages like NumPy, SciPy, Pandas, and Matplotlib,而miniconda只安装Anaconda-Python和conda环境管理器。 Anaconda仅能安装到您的个人资料,即:/home/<user>/并改变你的~/.bashrc~/.bash_profile预先考虑到您的个人$PATH蟒蛇的路径建议您~/.bashrc采购conda.sh,它可以让你使用conda activate <env|default is base>启动蟒蛇 – 这只会影响你 – 你的系统路径不变。因此,您不需要root访问权限或sudo来使用Anaconda!如果您已经将Anaconda-Python,miniconda或conda添加到您的个人路径,那么您应该从~/.bashrc中删除PATH导出,并更新到new recommendation,这样您的系统Python将再次出现。

这有点类似于我在上一节中解释的--user选项,除了它作为一个整体而不仅仅是包应用于Python。因此,Anaconda完全独立于您的系统Python,它不会干扰您的系统Python,只有您可以使用或更改它。由于它安装了新版本的Python及其所有库,因此您需要至少200MB的空间,但它对于缓存和管理库非常聪明,这对于您可以使用Anaconda进行的一些很酷的事情非常重要。

Anaconda在一个在线存储库(以前称为binstar)中策划依赖项所需的Python二进制文件和库集合,并且它们还将用户包作为不同的”channels”托管。 Anaconda使用的软件包管理器conda默认安装Anaconda的软件包,但您可以使用-c选项发出不同的”channel”信号。

使用conda安装软件包就像pip一样:

$ conda install -c pvlib pvlib  # install pvlib pkg from pvlib channel

但是conda可以做得更多!它还可以像virtualenv一样创建和管理虚拟环境。因此,由于Anaconda创建虚拟环境,pip包管理器可用于将包从PyPI安装到没有root或sudo的Anaconda环境中。不要将sudo与Anaconda一起使用!警告!虽然在Anaconda环境中混合pipconda时要小心,但是你需要更仔细地管理包依赖性。在conda环境中pip的另一个选择是使用conda-forge channel,但最好在新的conda环境中使用conda-forge作为默认通道。作为最后的手段,如果您无法在PyPI上找到任何软件包,请考虑使用--no-deps,然后使用conda手动安装其余的依赖项。

如果您熟悉该工具,Anaconda在某些方面也与Ruby RVM类似。 Anaconda conda还允许您使用不同版本的Python创建虚拟环境。 EG:conda create -n py35sci python==3.5.2 numpy scipy matplotlib pandas statsmodels seaborn将在名为py35sci的新环境中使用Python-3.5创建科学/data-science堆栈。您可以使用conda切换环境。从conda-4.4.0开始,这与使用source venv/bin/activatevirtualenv不同,但在conda-4.4.0之前,conda命令与virtualenv相同,并且还使用了source

# AFTER conda-4.4 
~/Projects/myproj $ conda activate py35sci

# BEFORE conda-4.4 
~/Projects/myproj $ source activate py35sci

但等等还有更多! Anaconda还可以安装不同语言,例如Anaconda r频道的R for statistical programming。您甚至可以设置自己的频道来上传包分发built for conda。如上所述,conda-forgeconda-forge Anaconda channel上维护PyPI上许多软件包的自动构建。

Epilogue

根据您的个人需求和访问,有许多选项可以在Linux上维护您的Python项目。但是,如果有任何一件事我希望你从这个答案中拿走,你几乎不需要使用sudo来安装Python包。 sudo的使用对你来说应该是有点不对劲的气味。你被警告了。

祝你好运,编码愉快!

第三种解决办法

除了Novarchibald之外,为python项目创建虚拟环境并在其中安装依赖项通常是个好主意。这使您可以更好地控制依赖项及其版本。要设置虚拟环境,请输入:

virtualenv --no-site-packages --distribute my_python_project

然后,激活它:

cd my_python_project
source bin/activate

此时,使用pip安装的任何内容都将保留在此虚拟环境中。如果你想在全球安装一些东西,那么你应该首先退出virtualenv:

deactivate

您可以找到更多关于virtualenv here的内容。

第四种办法

除了Zetah’a的回答,从终端安装python-pip的命令是:

sudo apt-get install python-pip

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2200.html,未经允许,请勿转载。