anaconda环境迁移-1

问题与背景

anaconda开发好的程序,在简单的项目中,需要部署到服务器上(此处专门针对win系统)。这里就一定会有一个移植的问题,往往问题点会出在:环境是内网,没有外网;安装的环境不能完全通过在线安装,也有安装包的形式;安装环境是混合的,不是单一的环境。 实际遇到的问题是:无网络,实现ananconda虚拟环境的移植,作为python中间件服务的基础环境。

参考资料

https://zhuanlan.zhihu.com/p/87344422 conda环境的迁移

方案与案例

问题:环境迁移后,创建新环境冲突的问题

如果是文件目录的直接粘贴,再通过pip安装一些包,就会出现anaconda没办法创建环境的问题。因为pip的包跟conda的包冲突了,可以这么理解。解决方案很简单只需要把anaconda目录下的pkgs文件删除掉就ok了。

最佳实践1:如何进行环境的迁移

最简单的粗暴的办法,就是在开发机器和部署机器上,安装一个相同目录的anaconda,所有东西,设置为严格一致。直接将开发机器anaconda目录中envs下的虚拟环境文件夹打包发到服务器ananconda对应目录下,粘贴即可。这种方式一般要求,两种机器,配置一样。

最佳实践2:如何进行环境的迁移

通过conda-pack 进行迁移。

# Pack environment my_env into my_env.tar.gz
conda pack -n my_env

# Pack environment my_env into out_name.tar.gz
conda pack -n my_env -o out_name.tar.gz

# Pack environment located at an explicit path into my_env.tar.gz
conda pack -p /explicit/path/to/my_env
# Unpack environment into directory `my_env`

mkdir -p my_env
tar -xzf my_env.tar.gz -C my_env

# Use Python without activating or fixing the prefixes. Most Python
# libraries will work fine, but things that require prefix cleanups
# will fail.
./my_env/bin/python

# Activate the environment. This adds `my_env/bin` to your path
source my_env/bin/activate

# Run Python from in the environment
(my_env) $ python

# Cleanup prefixes from in the active environment.
# Note that this command can also be run without activating the environment
# as long as some version of Python is already installed on the machine.
(my_env) $ conda-unpack

你可能感兴趣的:(python技术栈,python,开发语言,后端)