使用Windows
了解virtualenv
。这是我对此的理解以及我有的几个问题。如果我的理解不正确,请纠正我。
virtualenv
是为特定项目存储pip依赖性及其所选版本的环境。为您的项目创建一个文件夹,并且内部有依赖项。
有人告诉我您不想将.py脚本保存在虚拟ENV中,如果是这样的话,当我想运行该项目时如何访问虚拟env?在命令行中source ENV/bin/activate
下打开它,然后cd
打开我的脚本存储位置吗?
通过运行pip freeze
在该项目文件夹中仅创建一个txt文件,创建一个requirements.txt文件。该虚拟环境的依赖项副本?
如果我在另一个virutalenv中,我应该导入另一个virtualenv的要求?我去过文档,但还是不明白。
$ env1 / bin / pip冻结> requirements.txt
$ env2 / bin / pip install -r requirements.txt
猜猜我对“要求”描述感到困惑。最佳做法不是总是调用我们的requirements.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.
如何激活它? source django_1/bin/activate
不起作用?
我尝试过:source C:\Users\admin\Documents\Enviorments\django_1/bin/activate
每次我都得到:“源”不被识别为内部或外部命令,可操作程序或批处理文件。
答案 0 :(得分:0)
*免责声明*我主要使用conda环境而不是virtualenv,但是我相信大多数情况在这两个环境中都是相同的,并且适用于您的情况。
您应该能够从所处的任何环境访问脚本。如果您具有virtenvA和virtenvB,则可以从在任何环境中访问脚本。您要做的只是激活其中之一,然后运行python /path/to/my/script.py
,但是您需要确保已安装任何从属库。
是正确的,但为清楚起见,需求文件仅按名称包含依赖项列表。它不包含任何实际的代码或包。您可以打印出一个需求文件,但是它应该只是一个列表,其中列出了软件包名称及其版本号。像pandas 1.0.1 numpy 1.0.1 scipy 1.0.1
等
在此处的代码行中,您将导出env1
的依赖项列表,然后将这些依赖项安装在env2
中。如果env2
为空,那么它现在只是env1
的副本,否则它将是相同的,但是添加了env1
的所有软件包,并且版本号不同。一些相同的软件包,然后将被覆盖
答案 1 :(得分:0)
virtualenv只是为您的项目创建一个新的Python环境。可以将其视为系统中拥有的Python的另一个副本。虚拟环境有助于开发,尤其是在您需要相同库的不同版本时。
第一个问题的答案是,是的,对于每个使用virtualenv的项目,您需要先将其激活。激活后,当您运行python脚本时,不仅项目脚本,而且所有python脚本都将使用活动Python环境的依赖关系和配置。
回答第二个问题,pip freeze > requirements.txt
将在活动文件夹而不是项目文件夹中创建需求文件。因此,假设在您的cmd /终端中您在C:\Desktop
中,那么将在此处创建需求文件。如果您位于C\Desktop\myproject
文件夹中,则将在此处创建文件。需求文件将包含安装在活动virtualenv上的软件包。
第三个问题的答案与第二个问题有关。简单来说,您需要编写第二个需求文件的完整路径。因此,如果您在第一个项目中,并且想从第二个virtualenv安装软件包,则可以像env2/bin/pip install -r /path/to/my/first/requirements.txt
一样运行它。如果在您的终端中,您所在的活动文件夹中没有Requirements.txt文件,那么运行pip install
会给您一个错误。因此,运行命令并不知道您要使用哪个需求文件,而是对其进行指定。
我创建了一个virtualenv
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'不会被识别为内部或外部命令,可操作程序或批处理文件。
答案 2 :(得分:0)
是的,将virtualenv与项目文件分开保存是概念之一。 virtualenvwrapper和pipenv就是这样。但是就我个人而言,如果我以最简单的形式使用virtualenv
,则只需在virtualenv目录(bin/
之后)中创建具有相同名称的目录,并将项目文件保存在那里。
pip freeze
打印以使用pip控制台virtualenv
内部安装的软件包(及其版本)。如果要将这些要求保存到文件中,则应执行类似pip freeze > requirements.txt
可能性很小:
cd /path/to/venv2
)转到另一个虚拟环境。requirements.txt
文件,并将这些要求安装在第二个virtualenv中。