Chr*_*son 19 python distutils pip virtualenv multiple-versions
关于这个问题的不同方面的许多帖子,但我没有看到一个将所有这些结合在一起的帖子.
首先是一个主观陈述:当我们移出解释器并开始解决部署问题时,我们在使用Python语言时遇到的简单性似乎就像是分段.如何在同一台机器上拥有多个版本的Python?应该在哪里安装包裹?Disutils vs. setuptools vs. pip等.在部署方面,似乎Python的Zen被滥用得非常糟糕.我对Windows上的"DLL地狱"体验感到怪异的回声.
专家们是否同意这些问题的某种程度的最佳实践?
你在同一台机器上运行多个版本的Python吗?你如何仍然相信,他们可以共存 - 和较新的版本不会破坏依赖于早期版本的其他进程的假设(由操作系统供应商提供的脚本,例如)?这样安全吗?virtualenv足够吗?
在本地文件系统上,Python环境的不同组件(包括第三方软件包)的位置的最佳选择是什么?对于可以依赖的许多不同版本的Unixy和Windows操作系统,位置之间是否存在严格或粗略的对应关系?
沼泽中最阴暗的角落 - 你使用什么安装工具(setuptools,distutils,pip等),并且它们适合您的选择:文件位置,Python虚拟环境,Python路径等.
这些听起来像是难题.我希望经验丰富的Pythonistas可能已经为这些挑战定义了一种规范的方法(或两种方法).任何"挂在一起"作为一个可以放心使用的系统的方法(感觉不像是单独的,不相关的工具)将是非常有帮助的.
我发现virtualenv是在同一台机器上配置和维护多个环境的唯一可靠方法.它甚至可以将环境打包并安装在另一台机器上.
对于包管理我总是使用pip,因为它与virtualenv一起工作得非常好.它还可以轻松地从各种来源(如git存储库)安装和升级软件包.
我同意这是一个相当广泛的问题,但我\xe2\x80\x99无论如何都会尝试解决它的许多部分。
\n\n关于你的主观陈述:我不明白为什么Python的简单和优雅意味着打包和部署问题突然应该变得简单。与包装相关的有些事情很简单,有些则不然,有些可能很简单。如果我们有一个完整、强大且简单的打包系统,那对用户来说是最好的,但它并没有\xe2\x80\x99 那样。distutils 被创建,然后它的开发暂停,setuptools 被创建并添加了新的解决方案和新问题,distribute 由于社会问题而从 setuptools 中分叉出来,最后创建了 distutils2 来制作一个正式的完整库。(更多关于Distribution、distutils、setuptools 和 distutils2 之间的差异?)对于开发人员和用户来说,情况远非理想,但我们正在努力使其变得更好。
\n\n如何最好地在同一台机器上安装多个版本的Python?如果您在现代操作系统上使用 \xe2\x80\x99,请使用包管理器;如果您在 UNIX 上从源代码编译,则使用 \xe2\x80\x9cmake altinstall\xe2\x80\x9d;如果在以下情况,请使用类似的非冲突安装方案:您可以在 Windows 上从源代码进行编译。作为 Debian 用户,我知道我可以使用 \xe2\x80\x9cpythonX.Y\xe2\x80\x9d 来调用各个版本,以及默认版本 (\xe2\x80\x9cpython\xe2\x80\x9d和 \xe2\x80\x9cpython3\xe2\x80\x9d) 是由 Debian 开发人员决定的。一些操作系统已经开始打破 python == python2 的假设,因此有一个 PEP 正在进行中来祝福或谴责这一点: http: //www.python.org/dev/peps/pep-0394/ Windows 似乎缺乏一种使用一个Python版本作为默认版本的方法,因此有\xe2\x80\x99s另一个PEP:http ://www.python.org/dev/peps/pep-0397/
\n\n软件包应该安装在哪里?使用 distutils,我可以将项目安装到我的用户 site-packages 目录中(请参阅 PEP 370 或 docs.python.org)。问题到底是什么?
\n\n不支持同一项目的不同版本的并行安装。需要一名 PEP 来讨论导入系统和打包工具的更改。在有人开始讨论之前,使用 virtualenv 或 buildout 就足够好了。
\n\n我不明白\xe2\x80\x99t关于Python环境\xe2\x80\x9d的\xe2\x80\x9c组件位置的问题。
\n\n我主要使用系统软件包(即在 Debian 上使用 Aptitude 软件包管理器)。为了尝试项目,我克隆了他们的存储库。如果我需要 Aptitude 无法提供的 \xe2\x80\x99s 内容,我会在我的用户站点包目录中安装(或将 .pth 文件放入存储库)。我不需要自定义 PYTHONPATH,但我已使用 PYTHONUSERBASE 更改了用户站点包的位置。我不喜欢 setuptools/distribute 中的魔法和鸡蛋概念,所以我不使用它们。我\xe2\x80\x99已经开始在一个项目中使用virtualenv和pip(他们在幕后使用setuptools,但我进行了私人安装,所以我的全局Python没有setuptools)。
\n| 归档时间: |
|
| 查看次数: |
4821 次 |
| 最近记录: |