16

故事:我在 python 2.4 和 2.6 上运行的应用程序之一。我试图做一个 python2.4 到 python 的符号链接,事情开始在 ubuntu jaunty 上崩溃。现在我正在下载 2.4 的每个依赖项并使用 python2.4 setup.py install 安装它。依赖似乎是无穷无尽的。

问题1:我将如何告诉任何使用版本的框架,比如day django 使用 2.6 并说 mjango 使用 2.4?就像我们说的使用数据库数据库名称有点语法。

问题2:有没有更优雅的方式在版本之间切换,因为我对符号链接的破解是一场虚拟灾难?

问题3:我可以下载一个deb for say hardy,让jaunty相信它是给她的吗?

4

7 回答 7

31

使用Virtualenv

这里有更多信息:使用 virtualenv

使用 virtualenv,您可以为每个项目或应用程序使用所需的任何 Python 版本创建一个新的虚拟 Python 环境。然后,您可以在需要时激活相应的环境。

扩展我的答案:

您可以在您的计算机上安装多个版本的 Python(我的机器上有 2.4、2.5、2.6 和 3.1 - 我从源代码安装每个版本)。我使用 Mac,并将我的系统 Python 保持为 OS X 设置的默认值。

我使用easy_install安装软件包。在 ubuntu 上,您可以像这样获得 easy_install:

sudo apt-get install python-setuptools

要安装 virtualenv,请执行以下操作:

easy_install virtualenv

我倾向于为我正在处理的每个项目创建一个新的 virtualenv,并且不让它访问全局站点包。这将所有包紧密结合在一起,并允许我拥有我需要的所有东西的特定版本。

virtualenv -p python2.6 --no-site-packages ~/env/NEW_DJANGO_PROJECT

然后每当我做与这个项目相关的任何事情时,我都会激活它:

source ~/env/NEW_DJANGO_PROJECT/bin/activate

如果我现在运行 python,它会使用这个新的 python。如果我使用easy_install,它会将东西安装到我的新虚拟环境中。

所以,virtualenv 应该能够解决你所有的问题。

于 2009-07-10T11:19:31.287 回答
6
于 2012-05-25T07:26:01.330 回答
4

我发现http://github.com/utahta/pythonbrew比任何其他解决方案更容易安装和使用。

只需安装它,您将拥有以下选项:

pythonbrew install 2.7.2
pythonbrew use 2.7.2 # use 2.7.2 for a current terminal session
pythonbrew switch 2.7.2 # use 2.7.2 by default system wide
pythonbrew uninstall 2.7.2

注意:如果您使用的是基于 Linux 的操作系统并预装了 Python,则切换(系统范围)到另一个版本可能会出错,所以要小心。

于 2012-03-03T15:57:54.660 回答
3

比 Virtualenv 更草根的方法是并行安装两个 Python 版本。

如果有一个现有的安装,并且您希望在相同的根路径(例如 /usr/local)中进行第二次安装,请在进行安装时使用此目标:

make altinstall

当您的第二次安装是 Python 2.6 时,这将为您留下 /usr/local/bin/python2.6 以及旧的 /usr/local/bin/python。

在这两个版本之间切换的一种简单方法是在调用解释器的 shell 上使用 shell 别名(别名 python=/usr/local/bin/python2.6)。但这不适用于子 shell 和 she-bang 调用。

于 2009-07-10T11:57:08.370 回答
2

pyenv is yet another Python manager. The README.md at that link has a good set of instructions, but they basically are:

$ cd
$ git clone git://github.com/yyuu/pyenv.git .pyenv

Then set up your $PATH.

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile

Install the desired versions of Python:

$ pyenv install 2.7.8

After installing you need to run this:

$ pyenv rehash

Then switch to the version of Python you want to run, for the shell:

$ pyenv shell 2.7.8
于 2014-12-10T13:24:32.647 回答
1

“问题1:我将如何告诉任何使用版本的框架,比如day django,使用2.6,然后说mjango使用2.4?”

您只需使用他们需要的特定 python 版本运行它们。使用 /usr/bin/python2.4 运行 mjango,使用 /usr/bin/python2.6 运行 django。就这么简单。

“问题2:有没有更优雅的方式来切换版本,因为我对符号链接的破解是一场虚拟灾难?”

是的,见上文。有两个单独的 Python 安装,并使用不同的版本显式运行。

“问题3:我可以下载一个deb for say hardy,让jaunty相信它是为她准备的吗?”

这通常有效。如果不存在,那是因为它具有 Hardy 中存在的依赖项,而 Jaunty 中不存在依赖项,那么您就不能。

这是您没有问但应该问的问题 4。;)

“有没有更简单的方法来下载所有这些 Python 模块?”

就在这里。安装 setuptools,并使用 easy_install。对于那些具有 C 代码并需要编译的 Python 模块,它不会帮助您处理库依赖项。但它帮助所有其他人。easy_install 将一次性下载并安装相关模块的所有 Python 依赖项。这使得安装 Python 模块更快。

于 2009-07-10T12:43:57.133 回答
0

Move to the project directory :

Create an environment : virtualenv -p python2.7 --no-site-packages ~/env/twoseven

Then activate your source : source ~/env/twoseven/bin/activate

于 2016-02-13T15:18:51.117 回答