与特定Python和NumPy配置兼容的Pandas版本?
有没有什么程序可以帮助我找出哪些 pandas 版本和特定的 Python 和 numpy 配置是兼容的呢?
我想在 ESRI ArcMAP 10.1 中使用 pandas,这个软件运行在 32 位的 Windows 系统上,使用的是 Python 2.7 和 numpy 1.6。
我试着创建一个与 ESRI ArcMap 10.1 兼容的 Python 环境,方法是打开一个 32 位的 Anaconda 命令提示符,然后输入
conda create -n arcmap101 python=2.7 numpy=1.6 pandas
结果我得到了一个包含 pandas=0.10.1
的 Python 环境。
不过,看起来应该可以在 python=2.7
和 numpy=1.6
的基础上安装更高版本的 pandas,但我不太确定能高到什么程度。
我试着查看了 pandas 的 setup.py 在 GitHub 上的历史记录,发现从 pandas=0.14
之前都有 min_numpy_ver=1.6
的要求,虽然最近这个要求改成了 min_numpy_ver=1.7
,所以我不太清楚这是新的要求还是之前版本的一个 bug 修复。
我还看到在 PyPI 上,pandas=0.11
在 Windows 上是基于 numpy=1.6
构建的,而 pandas=0.12
则是基于 numpy=1.7
构建的。
但我不知道 PyPI 的构建是一个要求还是一个选择。
有没有什么好的方法可以找到这些信息,而不需要直接问 pandas 的开发者呢?
2 个回答
我们在尝试把numpy的版本改成1.22.3的时候,在requirements.txt文件里遇到了这个错误信息:
错误:找不到满足要求的numpy==1.22.3版本
但是当我们把它改回只写numpy的时候,流程就成功了。
在requirements.txt里的示例代码:
azure-functions-durable
azure-storage==0.30.0
pandas
numpy
requests
azure-identity
azure-keyvault-secrets
我查看了一些项目,发现当numpy==1.22.3时,pandas的版本也应该改成pandas==1.4.1或者pandas==1.4.2
在requirements.txt里的示例代码:
azure-functions-durable
azure-storage==0.30.0
pandas==1.4.1
numpy==1.22.3
requests
azure-identity
azure-keyvault-secrets
每个用conda构建的与numpy相关的包,都把numpy的主要版本号作为依赖项固定下来。这种版本号也会在构建字符串中体现出来(比如 np18py27
)。这可能有点过于谨慎,因为很多包并不使用numpy API中不兼容的部分(特别是,并不是所有的包都真的在numpy上编译C扩展),但无论如何,这就是目前的做法。
当numpy 1.8发布时,Continuum停止了对旧版本numpy的构建,这就是为什么当你让conda与numpy 1.6一起安装时,它会给你一个旧版本的pandas。想查看可用的版本,可以运行 conda search pandas
,并注意构建字符串。
如果你需要的numpy/pandas组合不可用,你有两个选择:
手动安装“错误”的pandas,然后希望它能正常工作。理论上,numpy的API是向后兼容的,所以这里还有希望。不过,安装后最好运行一下pandas的测试,看看它是否真的能用。可以尝试以下命令:
conda create -n arcmap101 python=2.7 numpy=1.6 pandas
conda install -n arcmap101 --no-deps pandas=0.13 # 或者其他版本
这样会让你的环境处于conda认为不一致的状态,但这些包会被安装在里面。你可以精确指定pandas的版本,甚至到构建字符串,比如
pandas=0.13.0=np17py27_0
自己构建一个pandas包,包含你想要的组合。运行
conda skeleton pypi pandas
会给你一个好的开始的配方(根据我们在Continuum使用的配方,build.sh中不需要特别的内容,也不需要补丁)。然后用以下命令构建它:conda build --npy 1.6 --py 2.7 pandas