我在这方面相对较新,而且我对操作的行有疑问。假设您创建了一个目录,并且想要为某个项目创建一个 Python 虚拟环境并克隆一些 git 存储库(例如,来自 GitHub)。然后您cd在该目录中并使用该venv模块(对于 python3)创建一个虚拟环境。为此,您运行以下命令,
python3 -m venv my_venv
Run Code Online (Sandbox Code Playgroud)
这将在您的目录中创建一个名为 my_env 的虚拟环境。要激活此环境,请运行以下命令。
source ./my_env/bin/activate
Run Code Online (Sandbox Code Playgroud)
如果在该目录中另外还有一个可以运行的 requirements.txt 文件,
pip3 install -r ./requirements.txt
Run Code Online (Sandbox Code Playgroud)
使用pip3安装各种依赖项和包。现在这是我感到困惑的地方。如果你想克隆 git repos 你到底在哪里做的?在您刚刚运行git clone并创建 git repos的同一目录中,或者您需要cd在另一个文件夹中。为了让python venv获取克隆的repos就足够了,还是必须在将repos克隆到目录中后安装venv?
Yeh*_*uah 11
首先,你需要了解什么是虚拟环境,当你了解它的用途后,动作的顺序就会更加清晰。
Python 应用程序通常会使用标准库中没有的包和模块。应用程序有时需要特定版本的库,因为应用程序可能需要修复特定的错误,或者应用程序可能使用库接口的过时版本编写。
这意味着一个 Python 安装可能无法满足每个应用程序的要求。如果应用程序 A 需要特定模块的 1.0 版,而应用程序 B 需要 2.0 版,则需求存在冲突,安装 1.0 或 2.0 版将导致一个应用程序无法运行。
这个问题的解决方案是创建一个虚拟环境,一个自包含的目录树,其中包含一个特定版本的 Python 的 Python 安装,以及一些额外的包。
不同的应用程序可以使用不同的虚拟环境。为了解决前面的冲突需求示例,应用程序 A 可以拥有自己的安装了 1.0 版的虚拟环境,而应用程序 B 拥有另一个安装了 2.0 版的虚拟环境。如果应用程序 B 需要将库升级到版本 3.0,这不会影响应用程序 A 的环境。
? 参考:12. 虚拟环境和包
通常,以下顺序是最合适的。
$ git clone <Project A> # Cloning project repository$ cd <Project A> # Enter to project directory$ python3 -m venv my_venv # If not created, creating virtualenv$ source ./my_venv/bin/activate # Activating virtualenv(my_venv)$ pip3 install -r ./requirements.txt # Installing dependencies(my_venv)$ deactivate # When you want to leave virtual environment离开虚拟环境后,步骤 5 中安装的所有依赖项都将不可用。