Gyo*_*yom 10 python installation dependencies multiple-versions
简短版本:如何摆脱多版本的噩梦?
长版本:多年来,我已经使用了几个版本的python,更糟糕的是,python的几个扩展(例如pygame,pylab,wxPython ......).每次它在不同的设置上,使用不同的操作系统,有时候是不同的架构(比如我的旧PowerPC mac).
现在我正在使用mac(x86-64上的OSX 10.6),每次我想恢复比几个月更早的脚本时,这是一个依赖性的噩梦.Python本身已经有三种不同的版本/usr/bin(2.5,2.6,3.1),但我必须从macports安装2.4 for pygame,其他东西(不记得是什么)迫使我从macports安装所有其他三个,所以在在我的系统上,我是七个(!)python实例的幸福拥有者.
但这不是问题,问题是,它们都没有安装正确的(即同一组)库,其中一些是32位,大约64位,现在我几乎丢失了.
例如,我现在正在尝试运行一个三年前的脚本(不是由我编写的),它曾经使用matplotlib/numpy在wxwidgets窗口的矩形内绘制实时图.但我惨遭失败:来自macports的py26-wxpython将无法安装,库存python包含wxwidgets但在32位和64位之间也存在一些冲突,并且它没有numpy ......真是一团糟!
显然,我做错了事.如何你 usally与所有的混乱应对?
ire*_*ses 10
我用virtualenv解决了这个问题.我同情希望避免进一步的噩梦抽象层次,但virtualenv实际上非常干净且易于使用.你真的这样做(命令行,Linux):
virtualenv my_env
Run Code Online (Sandbox Code Playgroud)
这会创建一个新的python二进制文件和库位置,以及默认情况下现有系统库的符号链接.然后,要切换路径以使用新环境,请执行以下操作:
source my_env/bin/activate
Run Code Online (Sandbox Code Playgroud)
而已.现在,如果您安装模块(例如with easy_install),它们将被安装到lib目录的my_env目录中.它们不会干扰现有的库,你不会得到奇怪的冲突,东西不会停止在你的旧环境中工作.他们是完全孤立的.
要退出环境,就这样做
deactivate
Run Code Online (Sandbox Code Playgroud)
如果您认为安装错误,或者您不再需要该环境,只需删除目录:
rm -rf my_env
Run Code Online (Sandbox Code Playgroud)
而且你已经完成了.这真的很简单.
virtualenv是很棒的.;)
一些技巧:
/Library/Frameworks/Python.framework.这看起来确实是一个更大的混乱,但至少事情是这样的。基本上,如果其中一个项目在 virtualenv 中运行,那么无论您执行什么升级,它都会继续运行,因为您永远不会更改“系统”安装。
| 归档时间: |
|
| 查看次数: |
719 次 |
| 最近记录: |