我想在无法访问互联网的生产服务器上部署 python 环境。
我发现了 Python Anaconda 发行版并安装了它来尝试一下。安装目录是1.6GB,在 pkgs
目录下可以看到有很多库。
但是,当我尝试安装环境时, conda
不在本地目录中查找…
conda create --offline --use-local --dry-run --name pandas_etl python
Using Anaconda Cloud api site https://api.anaconda.org
Fetching package metadata:
Solving package specifications:
Error: Package missing in current linux-64 channels:
- python
那么,如果 conda
需要在在线存储库中获取它们,那么捆绑所有这些库有什么意义呢?也许我错过了什么?
我正在寻找一种 “包含大量电池的 python” 以便于部署。
注意:我使用的是 Linux 系统并安装了常规的 anaconda,而不是 miniconda
原文由 stockersky 发布,翻译遵循 CC BY-SA 4.0 许可协议
好吧,在阅读了 Fabio Nelli 的书“Python 数据分析”之后,我开始玩 Pandas,我意识到 Pandas 是一个非常棒的库。所以,我一直在与 Anaconda 合作,让它在我的环境中工作。
1- 下载 Anaconda 安装程序并安装它(我想 miniconda 就足够了)
2-通过镜像(部分)anaconda存储库来创建本地频道
不要尝试在您的工作站上下载单个包以将它们推送到您的离线服务器。实际上,依赖关系不会得到满足。包需要包含在通道中并在元数据文件(repodata.json 和 repodata.json.bz2)中建立索引,以便正确地“粘合”在一起。
我使用 wget 来镜像 anaconda 存储库的一部分: https ://repo.continuum.io/pkgs/ 我使用类似这样的东西来过滤掉包,以免下载整个存储库:
当心,不要使用“仅 py35”包之类的东西。事实上,repo 中的许多包的名称中都没有版本字符串;你会想念他们的依赖。
好吧,我想你可以更准确地过滤。我取了大约 6GB 的包裹!
!!!!不要从刚刚下载的存储库部分构建自定义频道!!!! (anaconda 自定义频道)我一开始尝试过这个,但遇到了这个异常:“RecursionError:调用 Python 对象时超出了最大递归深度”。这是一个已知的 pb: https ://github.com/conda/conda/issues/2371 ==> 维护者对此进行了讨论:repodata.json 和 repodata.json.bz2 中维护的元数据不反映单个 pkg 中的元数据。他们选择只编辑回购元数据来修复问题,而不是每个包的元数据。所以,如果你从包中重建频道元数据,你就会错过。
==> 所以:不要重建频道元数据,只保留存储库元数据(repodata.json 和 repodata.json.bz2 包含在官方 anaconda 存储库中)。即使整个 repo 不在您的新频道中,它也会工作(至少,如果您在镜像时没有过滤太多 ;-) )
3- 测试并使用您的新频道
注意:不要在路径中包含您的平台架构。示例:您的频道树可能是:/Path_to_your_channel/repo.continuum.io/pkgs/free/linux-64 只需省略您的拱门(在我的例子中为 linux-64)。康达会发现的。
更新 :
依此类推…我想,您可以使用系统用户的 conda conf 文件强制使用此本地频道。
希望能帮助到你。
纪尧姆