Python Anaconda:如何测试更新的库是否与我现有的代码兼容?

时间:2015-04-24 14:46:35

标签: python anaconda

我在Windows 7机器上使用Python 2.7 Anaconda安装进行数据分析和科学计算。

发布新库时(例如新版本的pandas,patsy等),您如何建议我测试新版本与现有代码的兼容性?是否可以在同一台机器上安装两个Anaconda?你会推荐某种虚拟环境吗?有没有一种简单的方法可以使用Anaconda回滚到以前版本的库?

我问,因为上周最好的部分试图弄清楚为什么我以前的代码不再适用于新版本的pandas和patsy。我不需要评论我是多么生气...

顺便说一句,这也表明Py​​thon是一种可能有趣的数据分析和科学计算语言,但只是潜在的。主要图书馆太不稳定和不成熟。熊猫在大约3年半前发布了,我们距离1.0版还很远,所以我不希望事情会随着时间的推移而变得更好。想象一下,如果Matlab的每个新版本都要求对您的所有代码进行重大改写:Mathworks很久以前就会破产!

2 个答案:

答案 0 :(得分:4)

您可以在单独的虚拟环境中安装所有依赖项的特定版本,并在那里测试您的模块。这可以通过以下工作流程来实现,

$ conda create --yes -n new_env pip numpy=1.9 pandas=0.16 python=2 # specify the required versions
$ activate new_env
$ # install and test your module
$ deactivate

您可以在计算机上拥有任意数量的虚拟环境。

我可以理解当更新中出现问题时的挫败感,但恕我直言,python中的核心科学模块(numpy,scipy和pandas到达那里)非常稳定和成熟。稳定性不是关于版本1.0。确实,可能存在一些向后不兼容的变化,因为要获得改进并保持可管理的代码库需要付出代价,但整体情况相当合理。

更多关于部署/测试策略不应该与给定计算机上的安装相关联。如果您使用具有持续集成(CI)的版本控制并在虚拟环境中进行部署,那么如果更新出现问题,则应该很容易恢复到以前的设置。

答案 1 :(得分:1)

我会用conda克隆你的环境

# Replace update-tests with whatever you want to call the environment
# Replace root with the environment name if you use a non-root environment
conda create -n update-tests --clone root

然后更新该环境中的包

conda install -n update-tests pandas=0.16 ...

然后激活该环境进行测试

# On non-Windows this would be 'source activate update-tests'
activate update-tests

您可以在

之后停用
# Would be 'source deactivate' on non-Windows
deactivate