在工作中我们有一个中央的,只读的Linux Anaconda安装,并且有几个项目需要为他们各自的项目成员提供库包。 有没有办法在为每个项目预留的可写区域中安装软件包?
我们的Linux服务器也没有直接通过网络连接,但我们可以从Windows机器传输数据。有没有办法让Windows conda为我们的Linux安装下载数据,这样我就可以将下载的文件传输到Linux,然后在Linux上完成安装,conda linux不需要直接的Web连接?
提前致谢: - )
答案 0 :(得分:2)
这个问题的最佳答案有点倾向:Anaconda Distribution专为单个系统上的单个用户而设计,可以不受限制地访问Internet。任何其他用途被视为“非标签”和YMMV,但没有许可证限制,阻止您尝试使用它,如您所见。 Anaconda Enterprise是专为具有防火墙限制的多用户,服务器部署的Anaconda设计的商业产品。安全性,治理,赔偿,支持,协作等。有关详细信息,请查看https://www.continuum.io/。
但是有一些“解决方法”可以实现你想要的东西,尽管很复杂。为了使其可靠,可重复和可维护,您最终将重新实现Anaconda Enterprsie中的许多功能。以下是一些提示:
项目alice
的常规用户foo
可以conda create -p /nfs/project/foo/envs/custompython --offline anaconda; conda activate /nfs/project/foo/envs/custompython; conda install pkg1 pkg2 pkg3
您将遇到所有权/权限问题。如果您有合理的umask
值,那么当alice
的同事bob
尝试更新pkg2
项目中的foo
时,他会发现他不能取消链接在那里写的文件alice
。您可以使用chown
或alice
可以对chmod
执行操作(作为IT管理员),但这有点麻烦,您可以通过多种方式进行操作使conda环境瘫痪,因为它期望“可写性”对于特定环境来说是二元的。 conda GH问题追踪者(包括我自己)通过一个帐户启动conda env设置,然后使用另一个帐户进行模拟,在一半时间内完成,使所有内容不一致。 / p>
小心.condarc
个文件。我的建议:避免在任何地方,但在Anaconda基地安装(比如在/opt/anaconda/.condarc
内)。当多个重叠的.condarc文件结合在一起时,可能会发生各种各样奇怪的事情(上面的文档参考讨论了这个)。
只要在这些新环境中指定的包(及其依赖关系)是基本环境中可用包的子集(或随后添加到包缓存),当然也考虑到版本。
您可以使用在线Windows计算机下载软件包,方法是从repo.continuum.io
和anaconda.org
抓取它们。确保您为正确的平台下载它们。但挑战是:您需要下载一组包,以满足您要安装的软件包的依赖关系。当您离线时,没有一种超级简单的方法可以获取这些信息。
将新软件包放入Linux系统的软件包缓存后,请务必重新运行conda index
。
请注意直接从其tarball安装软件包:这不会获取任何依赖项,并执行所谓的“强制”安装。所以做conda install /path/to/conda/pkg-ver.tar.bz2
实际上与做conda install --force --no-deps pkg=ver
最相似(虽然不一样,但可以肯定)。 --force
表示安装将无关紧要,即使它会破坏您的环境(违反现有的软件包依赖项),--no-deps
意味着您将无法获得pkg
的任何依赖项安装。