虚拟鸟瞰理解

2024-05-04 05:46:46 发布

您现在位置:Python中文网/ 问答频道 /正文

使用Windows

学习virtualenv。这是我对它的理解和我的几个问题。如果我的理解有误,请纠正我。你知道吗

virtualenv是为特定项目存储pip依赖项及其所选版本的环境。一个文件夹是为您的项目和内部有依赖关系。你知道吗

  1. 有人告诉我你不想把你的.py脚本保存在virtual ENV中,如果是这样的话,当我想运行那个项目时,我该如何访问virtual ENV?在source ENV/bin/activate下的命令行中打开它,然后cd以我的方式将脚本存储到哪里?

  2. 通过运行pip freeze创建要求.txt项目文件夹中的文件,它只是一个txt文件。虚拟环境的依赖项的副本?

  3. 如果我在第二个virtualenv中,我应该向谁导入另一个virtualenv的需求?我看过文件,但还是不明白。你知道吗

    $env1/bin/pip冻结>;要求.txt你知道吗

    $env2/bin/pip安装-r要求.txt

我想我对“需求”的描述很困惑。不是最好的做法,总是呼吁我们的要求,要求.txt?如果是这样,env2怎么知道我想要env1需求?你知道吗

感谢您提供任何信息或建议。非常感谢你的帮助。你知道吗

我创建了一个virtualenv C:\Users\admin\Documents\Enviorments>virtualenv django_1 使用基前缀'c:\\users\\admin\\appdata\\local\\programs\\python\\python37-32'C:\Users\admin\Documents\Enviorments\django_1\Scripts\python.exe Installing setuptools, pip, wheel...done.中的新python可执行文件

如何激活它?source django_1/bin/activate不起作用?你知道吗

我试过:source C:\Users\admin\Documents\Enviorments\django_1/bin/activate每次我得到:'source'不被识别为内部或外部命令、可操作程序或批处理文件。


Tags: pip文件项目djangoenvtxt文件夹source
3条回答

virtualenv只是为您的项目创建一个新的Python环境。可以将其视为系统中的另一个Python副本。VirtualEnvironment有助于开发,特别是当您需要相同库的不同版本时。你知道吗

第一个问题的答案是,是的,对于使用virtualenv的每个项目,都需要首先激活它。激活后,当您运行python脚本时,不仅您的项目脚本,而且任何python脚本都将使用活动python环境的依赖项和配置。你知道吗

回答第二个问题,pip freeze > requirements.txt将在活动文件夹中创建需求文件,而不是在项目文件夹中。因此,假设在cmd/terminal中您位于C:\Desktop,那么需求文件将在那里创建。如果您在C\Desktop\myproject文件夹中,文件将在那里创建。需求文件将包含安装在activevirtualenv上的包。你知道吗

第三个问题的答案和第二个有关。简单地说,您需要编写第二个需求文件的完整路径。所以,如果您在第一个项目中,并且希望从第二个virtualenv安装软件包,那么您可以像env2/bin/pip install -r /path/to/my/first/requirements.txt那样运行它。如果在终端中,您处于活动文件夹中,而该文件夹没有要求.txt文件,然后运行pip install将给您一个错误。因此,运行该命令不知道要使用哪个需求文件,您可以指定它。你知道吗

我创造了一个虚拟世界 C:\Users\admin\Documents\Enviorments>virtualenv django_1 Using base prefix 'c:\\users\\admin\\appdata\\local\\programs\\python\\python37-32' New python executable in C:\Users\admin\Documents\Enviorments\django_1\Scripts\python.exe Installing setuptools, pip, wheel...done.

如何激活它?source django_1/bin/activate不起作用?你知道吗

我试过:source C:\Users\admin\Documents\Enviorments\django_1/bin/activate每次我得到:'source'不被识别为内部或外部命令、可操作程序或批处理文件。

  1. 是的,将virtualenv与项目文件分开保存是其中一个概念。virtualenvwrapperpipenv就是这样工作的。但就我个人而言,如果我以最简单的形式使用virtualenv,那么我只需在virtualenv的目录中创建同名的目录(在bin/旁边),并将项目文件保存在那里。

  2. pip freeze打印以控制台使用pip在virtualenv中安装的包(及其版本)。如果您想将这些需求保存到文件中,您应该执行pip freeze > requirements.txt

  3. 有一些可能性:

    • 您可以激活一个virtualenv,然后转到另一个virtualenv。你知道吗
    • 您可以从一个virtualenv复制requirements.txt文件,并在第二个virtualenv中安装这些需求

*免责声明*我主要使用conda环境,而不是virtualenv,但我相信这两个环境中的大多数都是相同的,并且适用于您的情况。你知道吗

  1. 您应该能够从任何环境中访问您的脚本。如果您有virtenvA和virtenvB,那么您可以从任一环境中访问脚本。您所要做的就是激活其中一个,然后运行python /path/to/my/script.py,但是您需要确保安装了任何依赖库。

  2. 正确,但为了清楚起见,需求文件只包含按名称列出的依赖项列表。它不包含任何实际的代码或包。你可以打印出一个需求文件,但它应该只是一个列表,上面写着包名和它们的版本号。比如pandas 1.0.1 numpy 1.0.1 scipy 1.0.1

  3. 在这里的代码行中,您将导出env1的依赖项列表,然后将这些依赖项安装在env2。如果env2是空的,那么它现在将只是env1的一个副本,否则它将是相同的,但是添加了env1的所有包,并且如果它有一些相同包的不同版本号,那么这将被覆盖

相关问题 更多 >