在 Ubuntu 11 中安装 Python 包的最佳方法是什么?我最近转换为 Ubuntu,想学习最佳实践。
对于上下文,我希望安装 tweeststream 包,但我在 Synaptic 包管理器中没有看到它。另外,我对编程很陌生,但我通常可以跟随代码示例。
Mar*_*ski 45
更新:2019 年 5 月 11 日:这篇文章主要提到virtualenv,但根据关于模块安装的Python 文档,由于 Python 3.5“venv现在建议使用 用于创建虚拟环境”,而virtualenv3.4 之前的 Python 版本则是替代方案.
更新:2018-08-17:自从 conda -4.4.0用于所有平台conda上的activateanaconda
更新:2017-03-27:PEP 513 - manylinuxPyPI 的二进制文件
更新:2016-08-19:连续体 Anaconda 选项
这在某种程度上是easy_install/pip 或 apt-get的重复。
Ubuntu 将 Python 用于许多重要功能,因此干扰 Python 会损坏您的操作系统。这是最主要的原因,我从来没有使用pip我的Ubuntu系统上,而是我请使用Ubuntu软件中心,突触,apt-get或较新的刚apt,所有默认情况下从安装软件包Ubuntu的仓库。这些软件包经过测试,通常是预编译的,因此它们安装得更快,最终是为 Ubuntu 设计的。此外,还安装了所有必需的依赖项,并维护了安装日志,以便它们可以回滚。我认为大多数软件包都有相应的Launchpad 存储库,因此您可以提交问题。
使用 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,您将看到源源不断的编译错误。但是,通过 Ubuntu 存储库安装 numpy 和 scipy 就像...
$ sudo apt-get install python-numpy python-scipy
Run Code Online (Sandbox Code Playgroud)
您很幸运,因为您使用的是 Ubuntu,这是现有最广泛支持且经常更新的发行版之一。很可能您需要的每个 Python 包都在 Ubuntu 存储库中,并且可能已经安装在您的机器上。每 6 个月,将随最新的 Ubuntu 发行版发布一个新的软件包周期。
如果您 100% 确信该软件包不会以任何方式干扰您的 Ubuntu 系统,那么您可以使用 pip 安装它,而 Ubuntu 通过将发行版软件包放在名为dist-packages/. Ubuntu 存储库有 pip、virtualenv 和 setuptools。但是,我支持 Wojciech 使用 virtualenv 的建议。
如果您需要最新版本,或者模块不在 Ubuntu 存储库中,则启动 virtualenv 并使用 pip 安装包。尽管 pip 和 setuptools 已经合并,但 IMO pip 比 easy-install 或 distutils 更受欢迎,因为它总是等到包完全下载并构建后才将其复制到您的文件系统中,并且它使升级或卸载变得轻而易举。它在很多方面与 apt-get 相似,因为它通常可以很好地处理依赖关系。然而,你将 可以亲自处理一些依赖,但由于PEP 513获得通过,现在有manylinux在Python包索引(PyPI中)流行的Linux发行版如Ubuntu和Fedora的二进制文件。例如,上面提到的 NumPy 和 SciPy 确保你已经从 Ubuntu 存储库安装了 gfortran、atlas-dev、blas-dev 和 lapack-dev例如,NumPy和SciPy现在默认作为manylinux轮子分发给 Ubuntu,使用 OpenBLAS 代替的阿特拉斯。您仍然可以使用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
Run Code Online (Sandbox Code Playgroud)
请参阅下面的“您不在sudoers”部分,以使用pip 安装方案将 pip、setuptools、virtualenv 或轮子的更新版本安装到您的个人配置文件中--user。您可以使用它来更新 pip 供您个人使用,正如JF Sebastian 在他对另一个答案的评论中指出的那样。注意:-m只有在 MS Windows 上更新 pip 时才真正需要。
python -m pip install --user pip setuptools wheel virtualenv
Run Code Online (Sandbox Code Playgroud)
较新版本的 pip 会自动缓存轮子,因此以下内容仅适用于较旧版本的 pip。由于您最终可能会多次安装这些,请考虑使用带有 pip 的轮子来创建驾驶室。Wheel 已经包含在virtualenvv13.0.0 中,因此如果您的版本virtualenv太旧,您可能需要先安装wheel。
~(my_py_proj)$ pip install wheel # only for virtualenv < v13.0.0
~(my_py_proj)$ pip wheel --no-use-wheel numpy scipy
Run Code Online (Sandbox Code Playgroud)
这将在 中创建二进制轮文件<cwd>/wheelhouse,用于-d指定不同的目录。现在,如果您启动另一个 virtualenv 并且您需要已经构建的相同软件包,您可以使用以下命令从您的驾驶室安装它们pip install --find-links=<fullpath>/wheelhouse
阅读Python 文档中的安装 Python 模块和Python 包索引主页上的安装包。还有pip、venv、virtualenv和wheel。
sudoers和virtualenv未安装。使用虚拟环境的另一种选择,或者如果您使用的是没有 root 权限的 Linux 共享,则使用--user或--home=<wherever-you-want>Python 安装方案与 Pythondistutils将安装软件包到site.USERBASE您想要的值或任何地方。较新版本的 pip 也有一个--user选项。不要使用sudo!
pip install --user virtualenv
Run Code Online (Sandbox Code Playgroud)
如果您的 Linux 版本的 pip 太旧,那么您可以使用--install-option它传递设置选项,这对于将自定义选项传递给某些setup.py构建扩展的包的脚本很有用,例如设置PREFIX. 您可能只需要解压缩发行版并distutils通过键入python setup install [options]. 阅读一些安装文档和distutils文档可能会有所帮助。
Python 足够好,可以先添加site.USERBASE到您PYTHONPATH的任何其他内容中,因此更改只会影响您。的热门地点--home是~/.local。请参阅 Python模块安装指南以了解确切的文件结构,特别是您的站点包所在的位置。注意:如果您使用--home安装方案,那么您可能需要在您的或 shell 中PYTHONPATH使用将其添加到环境变量export中.bashrc,.bash_profile以便您的本地化包在 Python 中可用。
如果您将 Python 用于数学、科学或数据,那么 IMO 一个非常好的选择是Anaconda-Python Distribution或由Anaconda, Inc.(以前称为Continuum Analytics)发布的更基本的miniconda 发行版。尽管任何人都可以从将 Anaconda 用于个人项目中受益,但默认安装包括 500 多个数学和科学包,如 NumPy、SciPy、Pandas 和 Matplotlib,而 miniconda 仅安装 Anaconda-Python 和 conda 环境管理器。Anaconda 仅安装到您的个人资料中,即:并更改您的或将 Anaconda 的路径添加到您的个人推荐采购 /home/<user>/~/.bashrc~/.bash_profile$PATHconda.sh在您的~/.bashrc允许您conda activate <env|default is base>用来启动 anaconda 的文件中-这只会影响您- 您的系统路径未更改。因此你就不会需要root访问或sudo使用蟒蛇!如果您已经将 Anaconda-Python、miniconda 或 conda 添加到您的个人路径,那么您应该PATH从您的 中删除导出~/.bashrc,并更新到新的推荐,这样您的系统 Python 将再次成为第一。
这有点类似于--user我在上一节中解释的选项,除了它适用于整个 Python 而不仅仅是包。因此 Anaconda与您的系统 Python 完全分离,它不会干扰您的系统 Python,只有您可以使用或更改它。由于它安装了新版本的 Python 及其所有库,因此您至少需要 200MB 的空间,但它在缓存和管理库方面非常聪明,这对于您可以使用 Anaconda 做的一些很酷的事情很重要。
Anaconda 在在线存储库(以前称为binstar)中管理依赖项所需的 Python 二进制文件和库的集合,并且它们还将用户包作为不同的“通道”托管。Anaconda 使用的包管理器conda默认安装来自 Anaconda 的包,但您可以使用该-c选项指示不同的“通道” 。
安装软件包,conda就像pip:
$ conda install -c pvlib pvlib # install pvlib pkg from pvlib channel
Run Code Online (Sandbox Code Playgroud)
但conda可以做的远不止这些!它还可以创建和管理虚拟环境,就像virtualenv. 因此,由于 Anaconda 创建虚拟环境,pip包管理器可用于将包从 PyPI 安装到 Anaconda 环境中,无需 root 或sudo. 千万不能使用sudo与蟒蛇!警告!但是在混合pip和conda在 Anaconda 环境中时要小心,b/c 你必须更仔细地管理包依赖项。pip在 conda 环境中的另一个选择是使用conda-forge 频道,但最好在使用 conda-forge 作为默认通道的全新 conda 环境中执行此操作。作为最后的手段,如果您在 PyPI 之外的任何地方都找不到包,请考虑--no-deps使用conda.
如果您熟悉该工具,Anaconda 在某些方面也与Ruby RVM相似。Anacondaconda还允许您使用不同版本的 Python创建虚拟环境。例如:conda create -n py35sci python==3.5.2 numpy scipy matplotlib pandas statsmodels seaborn将在名为py35sci. 您可以使用conda. 由于康达-4.4.0,现在这是不同的,以virtualenv它的用途source venv/bin/activate,但之前的畅达-4.4.0的conda命令是在相同的virtualenv,也使用source:
# AFTER conda-4.4
~/Projects/myproj $ conda activate py35sci
# BEFORE conda-4.4
~/Projects/myproj $ source activate py35sci
Run Code Online (Sandbox Code Playgroud)
但是等等还有更多!森蚺也可以安装不同的语言,如R代表统计编程从阿纳康达r信道。您甚至可以设置自己的频道来上传为 conda 构建的包分发。如前所述,conda- forge 在conda-forge Anaconda 频道上维护 PyPI 上许多包的自动构建。
根据您的个人需求和访问权限,在 Linux 上维护 Python 项目有多种选择。但是,如果我希望您从这个答案中获得任何一件事,那就是您几乎不需要使用sudo来安装 Python 包。使用的sudo应该是闻到你有什么不妥。你被警告了。
祝你好运,编码愉快!
zet*_*tah 32
我认为对您来说最好的方法是安装像“python-pip”这样的 Python 打包系统。您可以使用 Synaptic 或 Ubuntu 软件中心安装它。
Pip 将允许您轻松安装和卸载 Python 包,就像pip install package. 在您的情况下,终端将是这样的:
sudo pip install tweeststream
Run Code Online (Sandbox Code Playgroud)
Woj*_*ski 10
除了Novarchibald的添加外,通常为你的python项目创建一个虚拟环境并在其中安装依赖项通常是个好主意。这使您可以更好地控制依赖项及其版本。要设置虚拟环境,请输入:
virtualenv --no-site-packages --distribute my_python_project
Run Code Online (Sandbox Code Playgroud)
然后,使用以下命令激活它:
cd my_python_project
source bin/activate
Run Code Online (Sandbox Code Playgroud)
此时,您使用 pip 安装的任何内容都将保留在此虚拟环境中。如果你想全局安装一些东西,那么你应该首先退出 virtualenv:
deactivate
Run Code Online (Sandbox Code Playgroud)
您可以在此处找到有关 virtualenv 的更多信息。