我有一个使用miniconda和python 3.6.8创建的环境,称为basepy_3_6_8。
我想将环境快照保存到文件中,然后稍后在另一台计算机上重新创建它:
有不同的命令来捕获环境快照,但输出略有不同。我可以使用其中哪些方法来保证在目标中重新创建用户使用的确切环境?
我希望pip freeze > requirements.txt
和pip install -r requirements.txt
可以独立于源环境工作,但是我注意到conda环境中的pip冻结无法捕获python版本。
以下是创建conda环境以及不同命令输出的代码:
$ conda create -n myenv python=3.6.8
$ conda activate myenv
(myenv)$ pip freeze
astroid==2.1.0
autopep8==1.4.3
certifi==2018.11.29
colorama==0.4.1
isort==4.3.4
lazy-object-proxy==1.3.1
mccabe==0.6.1
pycodestyle==2.4.0
pylint==2.2.2
six==1.12.0
typed-ast==1.1.1
wincertstore==0.2
wrapt==1.11.0
(myenv)$ pip list
Package Version
----------------- ----------
astroid 2.1.0
autopep8 1.4.3
certifi 2018.11.29
colorama 0.4.1
isort 4.3.4
lazy-object-proxy 1.3.1
mccabe 0.6.1
pip 18.1
pycodestyle 2.4.0
pylint 2.2.2
setuptools 40.6.3
six 1.12.0
typed-ast 1.1.1
wheel 0.32.3
wincertstore 0.2
wrapt 1.11.0
(myenv)$ conda list
# packages in environment at C:\Users\alias\AppData\Local\Continuum\miniconda3\envs\myenv:
#
# Name Version Build Channel
certifi 2018.11.29 py36_0
pip 18.1 py36_0
python 3.6.8 h9f7ef89_0
setuptools 40.6.3 py36_0
sqlite 3.26.0 he774522_0
vc 14.1 h0510ff6_4
vs2015_runtime 14.15.26706 h3a45250_0
wheel 0.32.3 py36_0
wincertstore 0.2 py36h7fe50ca_0
(myenv)$ conda list --export
# This file may be used to create an environment using:
# $ conda create --name <env> --file <this file>
# platform: win-64
certifi=2018.11.29=py36_0
pip=18.1=py36_0
python=3.6.8=h9f7ef89_0
setuptools=40.6.3=py36_0
sqlite=3.26.0=he774522_0
vc=14.1=h0510ff6_4
vs2015_runtime=14.15.26706=h3a45250_0
wheel=0.32.3=py36_0
wincertstore=0.2=py36h7fe50ca_0
我最终对通用工具感兴趣,该工具可以捕获指定类型的当前环境(conda,virtualenv,venv,全局python环境),以便将其统一安装在另一台计算机上。最好的方法是什么?
答案 0 :(得分:1)
我从未使用过conda,但是我尝试使用两种不同的工具来管理python版本和您的项目依赖项。
要安装特定的python版本,我将使用pyenv:https://github.com/pyenv/pyenv。
pyenv还有一个插件来管理应支持Anaconda和Miniconda的virtualenvs(https://github.com/pyenv/pyenv-virtualenv):https://github.com/pyenv/pyenv-virtualenv#anaconda-and-miniconda
要管理您的依赖项(您在虚拟环境中安装的软件包),您有几种选择:
冻结点:它不会自动保证可重复性,因为它没有锁定文件来精确定位依赖树
诗歌:https://github.com/sdispater/poetry(支持锁定文件)
Pipenv:https://github.com/pypa/pipenv(支持锁定文件)
希望这会有所帮助。