提问人:Ουιλιαμ Αρκευα 提问时间:10/10/2018 最后编辑:Michael M.Ουιλιαμ Αρκευα 更新时间:10/19/2023 访问量:27486
如何正确使用 Pyenv 和 venv?
How can I properly use Pyenv and venv?
问:
文章阅读:
假设我们有这些目录:
~/Projects/PyA
:将 Python 3.4.3 与 Django 2.0 一起使用~/Projects/PyB
:将 Python 3.5.1 与 Django 2.1 一起使用~/Projects/PyC
:使用 Python 3.5.6 和 Django 2.2~/Projects/PyD
:将 Python 3.2 与 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 中,有一个名为 我可以在其中设置为当前项目安装哪些 gem(及其各自的版本),这是一个非常好的主意。Python 有类似的东西吗?Gemfile
PS:我使用 Arch Linux 作为 Vagrant 盒子的访客。
答:
这个问题有很多问题。
virtualenv 工作流通常非常简单。你为你的项目创建一个目录,cd进入它,然后运行一个简单的virtualenv,但你也可以指定你希望在虚拟环境中使用哪个Python可执行文件,例如,对于Python 3.5虚拟环境。virtualenv venv
-p python3.5
这里没有任何魔法发生。您需要安装 Python 3.5 才能创建 Python 3.5 虚拟环境。要激活此虚拟环境,您只需 .激活后,您的 shell 应反映您正在哪个虚拟环境中运行。你甚至可以运行来查看它实际上是针对目录结构的。简单。source venv/bin/activate
which python
venv
Python 中 Gemfile 的类比类似于大多数项目用作 .这些可以通过运行轻松生成,也可以通过运行来安装。通常,这是在虚拟环境的上下文中完成的,以避免中断或破坏操作系统的全局 Python 包。requirements.txt
pip freeze > requirements.txt
pip install -r requirements.txt
Kenneth Reitz 发布了一个名为 pipenv 的包含 virtualenv 的工具,它看起来非常漂亮,但我在改掉使用 virtualenv 的习惯方面遇到了一些麻烦,事实是,virtualenv 并没有给我带来足够的问题来深入探索这个新项目,但你的里程可能会有所不同。Reitz 先生对 Python 社区的贡献非常积极,因此绝对值得一看。
评论
何时使用虚拟环境的唯一目录?哪 推荐选项?为什么?
每个虚拟环境都“存在于”自己的文件夹中。您安装的所有包都将转到那里,尤其是当每个环境都有不同的 Python 版本时。
我应该如何安装上面列出的每个项目的包?
当你在创建项目环境后切换到它时,请看下面我的原始答案。所有安装的软件包都将专门安装到您当前正在使用的虚拟环境中。
您可以随时通过键入
which python
在终端中,您当前已激活项目环境。此外,您还可以检查
which pip
以确保是否要使用正确的 Python 解释器进行安装。如果要固定包,可以执行以下操作pip install somepackage
pip freeze > requirements.txt
任何时候,当前安装的软件包及其版本都将写入 textfile 。现在,您始终可以使用requirements.txt
pip install -r requirements.txt
我应该使用 virtualenvwrapper 吗?
我总是在每个项目的虚拟环境中工作,因此其他可能使用特殊包的固定版本的项目不受影响。
如何在项目之间切换(更改 Python/虚拟环境 在此过程中)轻松还是无痛?
您可以在 ~/.bashrc 文件或 .在终端中,打开(在我的示例中)带有文本编辑器,例如 Vim/nano 或您喜欢的编辑器之一:~/.bash_aliases
~/.bashrc
nano ~/.bashrc
在接近末尾的某个地方,您可以添加一行带有别名的行,以切换到项目目录并同时激活环境:
alias activate_proj1="cd ~/project_1 && pyenv activate venv_project_1"
因此,您只需在终端中键入(Tab 自动补全也有效),然后执行两个命令。不要忘记在更改某些内容后再次获取 bash 文件,或者只是打开一个新终端。activate_proj1
source ~/.bashrc
原答案:
pyenv
将处理您需要的一切:
我的工作流程(对于一个项目以使其更具可读性)如下:
pyenv install 3.5.1
cd python_projects
mkdir myproject
cd myproject
pyenv virtualenv 3.5.1 venv_myproject
之后,您可以简单地激活使用pyenv
pyenv activate venv_myproject
这将打开您独特的环境。在这里,你可以做所有你想做的事情,例如,使用pip安装你的软件包等。 完成环境设置后,可以冻结环境并创建需求文件:
pip freeze > requirements.txt
以便在需要时能够重建环境。这样,可能需要的所有开销(设置 PATH 等)都将由 pyenv 处理。
如果你想在不同的项目上工作,只需激活你需要的环境,就可以开始了!
请注意,当您在终端中放置文件夹时,您也可以通过将其名称放入文件中来使 pyenv 激活 virtualenv
。cd
.python-version
评论
我制作了一本小说明书。
从安装到激活/停用
安装pyenv
卷曲 https://pyenv.run |巴什
将以下行添加到此文件:.bashrc
source
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
# Restart your shell for the changes to take effect.
# Load pyenv-virtualenv automatically by adding
# the following to ~/.bashrc:
eval "$(pyenv virtualenv-init -)"
源代码 ~/.bashrc
如果构建基本失败,请安装:gcc
sudo apt install gcc
已降级软件包(如果安装 pyenv 时出现问题) sudo apt 安装 libc6=2.35-0ubuntu3
支持包:
sudo apt install -y zlib1g-dev
sudo apt-get install liblzma-dev
要列出所有软件包,请执行以下操作:
pyenv 安装 -l
安装特定的 Python 版本:
pyenv 安装 3.8.6
查看 pyenv 中的所有 Python 版本:
Pyenv 版本
选择该 Python 版本:
Pyenv当地<python_version>
要创建虚拟环境,请执行以下操作: 这将在根目录的某个地方创建venv,从那里您可以激活和停用它
pyenv virtualenv pyenv virtualenv 3 venv
激活
pyenv local myproject
pyenv 停用
问题mysqlclient
sudo apt-get 安装 python3-dev libmysqlclient-dev pip3 安装 mysqlclient
评论
libc6
评论