阅读文章:
Python Virtual Environments: A Primer,
Pyenv – Install Multiple Python Versions for Specific Project,
How to manage multiple Python versions and virtual environments
假设我们有以下目录:
~/Projects/PyA : it'll use Python 3.4.3 with Django 2.0
~/Projects/PyB : it'll use Python 3.5.1 with Django 2.1
~/Projects/PyC : it'll use Python 3.5.6 with Django 2.2
~/Projects/PyD : it'll use Python 3.2 with python-igraph
首先,我们安装所需的Python版本:
$ pyenv install 3.4.3
$ pyenv install 3.5.1
$ pyenv install 3.5.6
$ pyenv install 3.2
我的疑问从这里开始:
我应该这样做吗?
$ cd ~/Projects/PyA && pyenv local 3.4.3 && python3.4 -m venv proA
$ cd ~/Projects/PyB && pyenv local 3.5.1 && python3.5 -m venv proB
$ cd ~/Projects/PyC && pyenv local 3.5.6 && python3.5 -m venv proC
$ cd ~/Projects/PyD && pyenv local 3.2 && python3.2 -m venv proD
何时使用虚拟环境的唯一目录?推荐哪个选项?为什么?
我应该如何安装上面列出的每个项目的软件包?
我应该使用virtualenvwrapper吗?
如何轻松或轻松地在项目之间切换(在此过程中更改Python /虚拟环境)?
在Ruby中,有一个名为 Gemfile 的文件,我可以在其中设置为当前项目安装哪些gem(及其各自的版本),这是一个很好的主意,对于Python?
谢谢。
PS:我将ArchLinux用作来宾游击队。
编辑10/10/18::非常感谢您的回答。但是,我谨向所有人致以最大的敬意,请您能具体回答我的所有问题。我从实践例子中学到的东西比从理论学到的要好。
答案 0 :(得分:2)
编辑以解决所有问题:
何时使用虚拟环境的唯一目录?哪一个 选项推荐?为什么?
每个虚拟环境都“生活”在其自己的文件夹中。您安装的所有软件包都将安装到那里,尤其是在每种环境都有不同的python版本的情况下。
我应该如何安装上面列出的每个项目的软件包?
在创建项目环境后切换到项目环境时,请参见下面的原始答案,所有安装的软件包都将独家安装到您当前正在使用的虚拟环境中。
您始终可以通过输入
来检查当前正在使用哪个pythonwhich python
当前在终端中已激活项目环境。此外,您还可以检查
which pip
确保是否使用pip install somepackage
进行安装,以正确的python为目标。如果您想固定包装,则可以
pip freeze > requirements.txt
任何时候,当前安装的软件包及其版本都将写入文本文件requirements.txt
。现在,您随时可以使用
pip install -r requirements.txt
我应该使用virtualenvwrapper吗?
我将始终在每个项目的虚拟环境中工作,因此不会影响可能使用特殊程序包的某些固定版本的其他项目。
如何在项目之间切换(更改Python /虚拟环境 过程中)是轻松还是轻松?
您可以在~/.bashrc
或~/.bash_aliases
中定义一个别名。在终端中(以我的示例为例),使用文本编辑器(例如,文本编辑器)打开~/.bashrc
vim / nano或您喜欢的一种:
nano ~/.bashrc
在末尾附近的某处,您可以添加带有别名的行以切换到项目目录并同时激活环境:
alias activate_proj1="cd ~/project_1 && pyenv activate venv_project_1"
因此,您仅在终端中键入activate_proj1
(选项卡补全也起作用),并且两个命令都将执行。用source ~/.bashrc
进行更改或打开新终端后,别忘了再次获取bash文件。
原始答案:
pyenv
将满足您的所有需求:
我的工作流程(为了使一个项目更具可读性)如下:
pyenv install 3.5.1
cd python_projects
mkdir myproject
cd myproject
pyenv virtualenv 3.5.1 venv_myproject
此后,您只需使用{p> 1激活由pyenv
创建的virtualenv
pyenv activate venv_myproject
这将打开您独特的环境。在这里您可以做所有想要的事情,例如使用pip等安装软件包 完成环境设置后,可以冻结环境并创建需求文件:
pip freeze > requirements.txt
能够根据需要重建环境。这样,pyenv将处理所有可能需要的开销(设置PATH等)。
如果您要从事不同的项目,只需激活所需的环境,然后就可以使用!
答案 1 :(得分:0)
这个问题有很多事情。
virtualenv工作流程通常非常简单。您为项目创建了一个目录,将其插入CD,然后为简单的virtualenv运行virtualenv venv
,但是您也可以使用-p python3.5
为python3指定您在虚拟环境中想要的python可执行文件。 .5虚拟环境,例如。这里没有魔术。您需要安装python3.5才能创建python3.5虚拟环境。要激活此虚拟环境,只需source venv/bin/activate
。激活后,您的外壳程序将反映您正在使用的虚拟环境。您甚至可以运行which python
来查看它实际上是针对venv
目录结构的。很简单。
Python中Gemfile的类似物与大多数项目用作requirements.txt
的相似。这些可以通过运行pip freeze > requirements.txt
轻松生成,也可以通过运行pip install -r requirements.txt
安装。通常,这是在虚拟环境的上下文中完成的,以避免破坏或破坏操作系统的全局python软件包。
肯尼斯·雷茨(Kenneth Reitz)发布了一个包含virtualenv的工具,名为pipenv,它看起来非常不错,但是我在打破使用virtualenv的习惯时遇到了一些麻烦,事实是,virtualenv还没有给我足够的知识问题需要深入探索这个新项目,但是您的工作量可能会有所不同。 Reitz先生对python社区的贡献是非常积极的,因此绝对值得一看。