创建虚拟环境时如何选择合适目录?(Flask 入门ch1)

大家好!正在学习《Flask 入门教程》,有个问题搜了一些资料但是不得要领,希望得到大家的指教。

运行环境

  • 系统:macOS版本 10.15.4(16G 1867MHz DDR3)
  • Py版本:Python3.7.7
  • 编辑器:Atom 1.45.0 x 64

背景

在 《Flask 入门教程》第一章:准备工作(P12-13)

以下操作在 watchlist/ 下级文件夹中进行()具体见下图:

  1. 利用 python3 -m venv watchlist-env 创建虚拟环境
  2. 创建虚拟环境后,利用 $ . env/bin/activate # Linux 或 macOS 激活了虚拟环境。

我发现在文件夹 watchlist-env中多了一个 pyvenv.cfg 文件,内容如下:

home = /opt/miniconda3/bin
include-system-site-packages = false
version = 3.8.3

请问为什么要选择 /opt/miniconda3/bin 这个文件夹呢?本地环境配置的时候选择目录是否需要注意或者遵守的标准呢?

因为我刚开始学习Python和flask进行建站,所以对于目录的选择都是直接直接放到专门创建程序的文件夹中。但是虚拟环境的创建目录根据这里的指令,似乎并不是随便选择的?请问为什么会选择 /opt/miniconda3/bin 呢?

pyvenv.cfg 是使用 Python 的 venv 模块创建虚拟环境时自动创建的配置文件,文件中列出了创建虚拟环境时使用的配置情况,其中的 home 值是创建虚拟环境时使用的全局 Python 二进制文件/解释器(the base Python that this virtual environment was created from,也就是你执行 python3 命令启动的那个)所在目录。因为你电脑全局安装的 Python 解释器是 Miniconda,它把 Python 二进制文件放在 /opt/miniconda3/bin 目录下,所以 home 的值是这个目录。

附上 Python 文档相关部分供参考:

Creation of virtual environments is done by executing the command venv :

python3 -m venv /path/to/new/virtual/environment

Running this command creates the target directory (creating any parent directories that don’t exist already) and places a pyvenv.cfg file in it with a home key pointing to the Python installation from which the command was run (a common name for the target directory is .venv ). It also creates a bin (or Scripts on Windows) subdirectory containing a copy/symlink of the Python binary/binaries (as appropriate for the platform or arguments used at environment creation time). It also creates an (initially empty) lib/pythonX.Y/site-packages subdirectory (on Windows, this is Lib\site-packages ). If an existing directory is specified, it will be re-used.

Link: https://docs.python.org/3/library/venv.html#creating-virtual-environments

P.S. 因为这是一个论坛,建议提问时不用指定我来回答,一来我不一定可以及时回复,二来这样也「主动拒绝」了其他潜在的回答者(所以我修改了你的帖子里的一些措辞)。

1 Like