【虚拟环境下的.yml文件/requirement.txt文件的生成与重新加载】
文前白话
进行项目开发的过程中,如果需要将自己配置好的虚拟环境在另外的电脑端进行转移,或者分享运行的环境,可以将环境依赖写入文件中。
pip 方式下生成requirements.txt环境包文件
requirements.txt文件包含项目所需要的所有安装包,如下图:
说明:
使用requirements.txt文件安装环境包,需要自己提前重新创建好一个新的环境,指定python的版本,环境的名称等等,而使用.yml文件则不用,因为.yml文件中会包含复制环境安装包时候对应的环境名,写在文件中了。
另外,开源的项目中,指定的安装环境文件还会区分cpu和gpu两种,主要与电脑硬件关联。
① requirements.txt文件的生成
步骤:
激活进入需要打包依赖的虚拟环境中:
执行代码:
pip freeze >requirements_self_named.txt
生成的文件可以自己命名 将requirements.txt -> 文件名.txt
这里如果要分享环境,只需分享requirements_self_named.txt文件。
②安照 requirements.txt文件在新的电脑端安装环境包
在新建立的空白环境中,cd 进入requirements_self_named.txt文件所在目录下,执行命令:
pip install -r requirements_self_named.txt
就可以创建上述或者别人指定的安装包。
conda 方式下的yml文件
对比可以发现,yml文件安装方式更加方便,通过conda命令,可以直接指定环境名称、python版本以及pip所需要的安装包。
① yml文件的生成
同上述步骤,激活进入目标环境中,执行命令:
conda env export > conda-self-named-gpu.yml
如:
通过yml文件可以创建或者分享指定项目所需环境。
② 安照.yml文件加载环境
直接在 conda 的base 环境下,cd 进入.yml文件所在的路径后,执行:
conda env create -f 文件名.yml
附: yolov4-deepsort-gpu 的.yml 文件(亲测可运行)
Cudatoolkit=10.1.243
cudnn=7.6.5
name: yolov4-deepsort
channels:
- defaults
dependencies: - _libgcc_mutex=0.1=main
- _openmp_mutex=4.5=1_gnu
- blas=1.0=mkl
- brotli=1.0.9=he6710b0_2
- bzip2=1.0.8=h7b6447c_0
- ca-certificates=2021.7.5=h06a4308_1
- cairo=1.14.12=h8948797_3
- certifi=2021.5.30=py37h06a4308_0
- cudatoolkit=10.1.243=h6bb024c_0
- cudnn=7.6.5=cuda10.1_0
- cycler=0.10.0=py37_0
- dbus=1.13.18=hb2f20db_0
- expat=2.4.1=h2531618_2
- ffmpeg=4.0=hcdf2ecd_0
- fontconfig=2.13.1=h6c09931_0
- fonttools=4.25.0=pyhd3eb1b0_0
- freeglut=3.0.0=hf484d3e_5
- freetype=2.10.4=h5ab3b9f_0
- glib=2.63.1=h5a9c865_0
- graphite2=1.3.14=h23475e2_0
- gst-plugins-base=1.14.0=hbbd80ab_1
- gstreamer=1.14.0=hb453b48_1
- harfbuzz=1.8.8=hffaf4a1_0
- hdf5=1.10.2=hba1933b_1
- icu=58.2=he6710b0_3
- intel-openmp=2021.3.0=h06a4308_3350
- jasper=2.0.14=h07fcdf6_1
- jpeg=9b=h024ee3a_2
- kiwisolver=1.3.1=py37h2531618_0
- lcms2=2.12=h3be6417_0
- libedit=3.1.20210714=h7f8727e_0
- libffi=3.2.1=hf484d3e_1007
- libgcc-ng=9.3.0=h5101ec6_17
- libgfortran-ng=7.5.0=ha8ba4b0_17
- libgfortran4=7.5.0=ha8ba4b0_17
- libglu=9.0.0=hf484d3e_1
- libgomp=9.3.0=h5101ec6_17
- libopencv=3.4.2=hb342d67_1
- libopus=1.3.1=h7b6447c_0
- libpng=1.6.37=hbc83047_0
- libstdcxx-ng=9.3.0=hd4cf53a_17
- libtiff=4.2.0=h85742a9_0
- libuuid=1.0.3=h1bed415_2
- libvpx=1.7.0=h439df22_0
- libwebp-base=1.2.0=h27cfd23_0
- libxcb=1.14=h7b6447c_0
- libxml2=2.9.12=h03d6c58_0
- lz4-c=1.9.3=h295c915_1
- matplotlib=3.4.2=py37h06a4308_0
- matplotlib-base=3.4.2=py37hab158f2_0
- mkl=2021.3.0=h06a4308_520
- mkl-service=2.4.0=py37h7f8727e_0
- mkl_fft=1.3.0=py37h42c9631_2
- mkl_random=1.2.2=py37h51133e4_0
- munkres=1.1.4=py_0
- ncurses=6.2=he6710b0_1
- olefile=0.46=py37_0
- opencv=3.4.2=py37h6fd60c2_1
- openjpeg=2.4.0=h3ad879b_0
- openssl=1.0.2u=h7b6447c_0
- pcre=8.45=h295c915_0
- pillow=8.3.1=py37h2c7a002_0
- pip=21.2.2=py37h06a4308_0
- pixman=0.40.0=h7b6447c_0
- py-opencv=3.4.2=py37hb342d67_1
- pyparsing=2.4.7=pyhd3eb1b0_0
- pyqt=5.9.2=py37h05f1152_2
- python=3.7.0=h6e4f718_3
- python-dateutil=2.8.2=pyhd3eb1b0_0
- qt=5.9.6=h8703b6f_2
- readline=7.0=h7b6447c_5
- setuptools=52.0.0=py37h06a4308_0
- sip=4.19.8=py37hf484d3e_0
- six=1.16.0=pyhd3eb1b0_0
- sqlite=3.33.0=h62c20be_0
- tk=8.6.10=hbc83047_0
- tornado=6.1=py37h27cfd23_0
- wheel=0.37.0=pyhd3eb1b0_0
- xz=5.2.5=h7b6447c_0
- zlib=1.2.11=h7b6447c_3
- zstd=1.4.9=haebb681_0
- pip:
- absl-py==0.13.0
- astunparse==1.6.3
- cachetools==4.2.2
- charset-normalizer==2.0.4
- click==8.0.1
- easydict==1.9
- flask==2.0.1
- gast==0.3.3
- google-auth==1.35.0
- google-auth-oauthlib==0.4.5
- google-pasta==0.2.0
- grpcio==1.39.0
- h5py==2.10.0
- idna==3.2
- importlib-metadata==4.8.0
- itsdangerous==2.0.1
- jinja2==3.0.1
- keras-preprocessing==1.1.2
- lxml==4.6.3
- markdown==3.3.4
- markupsafe==2.0.1
- numpy==1.18.5
- oauthlib==3.1.1
- opencv-python==4.1.1.26
- opt-einsum==3.3.0
- protobuf==3.17.3
- pyasn1==0.4.8
- pyasn1-modules==0.2.8
- requests==2.26.0
- requests-oauthlib==1.3.0
- rsa==4.7.2
- scipy==1.4.1
- tensorboard==2.2.2
- tensorboard-plugin-wit==1.8.0
- tensorflow-gpu==2.3.0rc0
- termcolor==1.1.0
- tf-estimator-nightly==2.3.0.dev2020062301
- tqdm==4.62.2
- typing-extensions==3.10.0.0
- urllib3==1.26.6
- werkzeug==2.0.1
- wrapt==1.12.1
- zipp==3.5.0