我想在离线机器(即无法访问互联网)上从 .yaml 文件创建一个 Conda 环境。在在线机器上,这工作得很好:
conda env create -f environment.yaml
但是,它在离线机器上不起作用,因为找不到包。我该怎么做?
如果那不可能,是否有另一种简单的方法可以将我的完整 Conda 环境转移到离线机器(包括 Conda 和 pip 安装包)?
一个一个地检查软件包以从 .tar.bz2 文件安装它们是可行的,但它非常麻烦,所以我想避免这种情况。
最佳答案
如果你可以使用 pip 安装包,你应该看看 devpi
,特别是它的服务器。 devpi
可以缓存通常从 PyPI 安装的包,因此只有在第一次安装时它才会真正检索它们。您必须配置 pip
以从 devpi 服务器检索包。
因为您不想手动列出所有包及其依赖项,所以您应该在连接到 Internet 的机器上:
- 安装 devpi 服务器(我在 Docker 容器中运行)
- 运行你的安装
- 检查 devpi 存储库并从那里收集所有
.tar.bz2
和.whl
文件(您可能可以将整个文件打包)
在未连接的机器上:
- 安装devpi服务器和客户端
- 使用 devpi 客户端将您收集的所有包(使用
devpi upload
)上传到 devpi 服务器 - 确保您已配置 pip 以查看 devpi 服务器
- 运行
pip
,它会找到本地服务器上的所有包。
devpi
有一个小的学习曲线,它已经值得遍历,因为速度和安装私有(private)包(即不上传到 PyPI)作为正常依赖的能力,只需生成包并将其上传到您本地的 devpi 服务器。
关于yaml - 来自 .yaml 离线的 Conda 环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45805639/