安装Python包的最佳方法是什么?
在Ubuntu 11中安装Python包的最佳方法是什么? 我是最近转换到Ubuntu并希望学习最佳实践。
对于上下文,我希望安装tweeststream包,但我没有在我的Synaptic包管理器中看到它。 另外,我对编程很新,但我通常可以跟随代码示例。
我认为最好的方法是安装Python包装系统,如“python-pip”。 您可以使用Synaptic或Ubuntu软件中心进行安装。
Pip将允许您轻松安装和卸载Python包,就像pip install package
。 在你的情况下,终端会是这样的:
sudo pip install tweeststream
更新时间:2018-08-17:因为conda -4.4.0使用conda在所有平台上activate
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用于许多重要function,因此干扰Python可能会破坏您的操作系统。 这是我从不在我的Ubuntu系统上使用pip
主要原因,而是我使用Ubuntu软件中心, synaptic , apt-get
或更新的apt
,这些都默认安装来自Ubuntu存储库的软件包。 这些软件包经过测试,通常是预编译的,因此安装速度更快,最终设计用于Ubuntu。 此外,还安装了所有必需的依赖项,并保留了安装日志,以便可以回滚它们。 我认为大多数软件包都有相应的Launchpad存储库,因此您可以提出问题。
使用Ubuntu软件包的另一个原因是,有时这些Python软件包具有不同的名称,具体取决于您从哪里下载它们。 Python-chardet是一个包的例子,它曾经在PyPI上被命名为一个东西,在Ubuntu存储库中被另一个东西命名。 因此,执行像pip install requests
这样的事情将不会意识到chardet已经安装在你的系统中,因为Ubuntu版本有一个不同的名称,因此安装一个新版本会以微不足道的方式破坏你的系统,但仍然为什么你会这样做。
通常,您只想在您的操作系统中安装可信代码。 所以你应该紧张地输入$ sudo pip
。
最后,使用Ubuntu软件包更容易安装一些东西。 例如,如果您尝试使用pip install numpy
来安装numpy&scipy,除非您已经安装了gfortran,atlas-dev,blas-dev和lapack-dev,您将看到无休止的编译错误。 但是,通过Ubuntu存储库安装numpy&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 Package Index(PyPI)上有manylinux
二进制文件,用于流行的Linux发行版,如Ubuntu和Fedora 。 例如,如上所述为NumPy和SciPy确保你已经从Ubuntu存储库安装了gfortran,atlas-dev,blas-dev和lapack-dev例如, NumPy和SciPy现在默认使用OpenBLAS作为manylinux
轮子分发给manylinux
轮子而不是ATLAS。 您仍然可以使用pip选项--no-use-wheel
或--no-binary
从源代码构建它们。
~$ 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供您个人使用,正如JF Sebastian在评论中指出的另一个答案 。 注意:更新pip时, -m
实际上只在MS Windows上是必需的 。
python -m pip install --user pip setuptools wheel virtualenv
较新版本的pip会自动缓存轮子,因此以下内容仅适用于旧版本的pip。 由于您可能会多次安装这些,因此请考虑使用带有点的轮子来创建驾驶室。 自从v13.0.0开始,wheel已包含在virtualenv
,因此如果你的virtualenv
版本太旧,你可能需要先安装wheel。
~(my_py_proj)$ pip install wheel # only for virtualenv < v13.0.0 ~(my_py_proj)$ pip wheel --no-use-wheel numpy scipy
这将在
创建二进制轮文件,使用-d
指定不同的目录。 现在如果你开始另一个virtualenv并且你需要你已经构建它们的相同包,你可以使用pip install --find-links=
在你的驾驶室中安装它们pip install --find-links=
阅读Python文档中的安装Python模块和Python Package Index主页上的Get Packages 。 还有pip , virtualenv和wheel 。
如果你不是sudoers
并且没有安装virtualenv
。
使用虚拟环境的另一个选择,或者如果您使用的是没有root权限的Linux共享,那么使用带有Python的distutils
的--user
或--home=
Python安装方案将安装软件包到site.USERBASE
价值或者你想要的地方。 较新版本的pip也有--user
选项。 不要使用sudo
!
pip install --user virtualenv
如果您的Linux版本的pip太旧,那么您可以使用--install-option
传递安装--install-option
,这对于将一些自定义选项传递给某些构建扩展的包的setup.py
脚本非常有用,例如设置PREFIX
。 您可能需要通过键入python setup install [options]
来提取分发并使用distutils
以旧式方式安装包。 阅读一些安装文档和distutils
文档可能会有所帮助。
Python非常site.USERBASE
在其他任何事情之前将site.USERBASE
添加到您的PYTHONPATH
,因此更改只会影响您。 --home
的热门地点是~/.local
。 有关确切的文件结构,请参阅Python 模块安装指南 ,特别是您的站点包的位置。 注意 :如果使用--home
安装方案,则可能需要使用.bashrc
, .bash_profile
或shell中的export
将其添加到PYTHONPATH
环境变量中,以便在Python中提供本地化包。
使用Continuum Anaconda Python进行数学,科学,数据或个人项目
如果您使用Python进行数学,科学或数据,那么IMO是一个非常好的选择,是Anaconda-Python Distribution或Anaconda,Inc。(以前称为Continuum Analytics )发布的更基本的miniconda发行版 。 虽然任何人都可以将Anaconda用于个人项目, 但默认安装包括超过500个数学和科学软件包,如NumPy,SciPy,Pandas和Matplotlib ,而miniconda只安装Anaconda-Python和conda环境管理器。 Anaconda只安装到您的个人资料中, 即: /home/
并改变您的 建议在~/.bashrc
或~/.bash_profile
以便将Anaconda的路径添加到您的个人$PATH
~/.bashrc
获取conda.sh
让你使用conda activate
来启动anaconda - 这只会影响你 - 你的系统路径不变 。 因此, 您不需要root访问权限或sudo
来使用Anaconda! 如果您已经将Anaconda-Python,miniconda或conda添加到您的个人路径中,那么您应该从~/.bashrc
删除PATH
导出,并更新到新建议 ,因此您的系统Python将首先再次出现。
这有点类似于我在上一节中解释的--user
选项,除了它作为一个整体而不仅仅是包应用于Python。 因此Anaconda 与您的系统Python完全分开 ,它不会干扰您的系统Python,只有您可以使用或更改它。 由于它安装了新版本的Python及其所有库,您将需要至少200MB的空间,但它对于缓存和管理库非常聪明,这对于您可以使用Anaconda进行的一些很酷的事情非常重要。
Anaconda在一个在线存储库(以前称为binstar )中管理依赖项所需的Python二进制文件和库的集合,并且它们还将用户包作为不同的“通道”托管。 Anaconda, conda
使用的软件包管理器默认安装Anaconda的软件包,但您可以使用-c
选项发出不同的“通道”信号。
像pip
一样用conda
安装包:
$ conda install -c pvlib pvlib # install pvlib pkg from pvlib channel
但conda
可以做得更多! 它还可以像virtualenv
一样创建和管理虚拟环境。 因此,由于Anaconda创建了虚拟环境,因此可以使用pip
包管理器将包从PyPI安装到没有root或sudo
的Anaconda环境中。 不要将sudo
与Anaconda一起使用! 警告! 虽然在Anaconda环境中混合pip
和conda
时要小心,但是你需要更仔细地管理包依赖。 在conda环境中进行pip
另一个选择是使用conda-forge通道 ,但最好在conda-forge作为默认通道的新conda环境中执行此操作。 作为最后的手段,如果您无法在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创建科学/数据科学堆栈。 您可以使用conda
切换环境。 从conda-4.4.0开始,现在这与使用source venv/bin/activate
virtualenv
不同 ,但是在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还可以安装不同的语言,例如R,用于 Anaconda r
频道的 统计编程 。 您甚至可以设置自己的频道来上传为conda构建的包分发。 如上所述, conda- forge在conda-forge Anaconda频道上维护PyPI上许多软件包的自动构建。
结语
根据您的个人需求和访问,有许多选项可以在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的信息 。
除了Zetah’a的回答,从终端安装python-pip的命令是:
sudo apt-get install python-pip