我使用Linuxbrew(Homebrew 2.2.5)在我的Ubuntu 16.04 VPS上安装了pyenv-virtualenv
。pyenv版本为:1.2.16
。现在当我做这样的测试时:
pyenv install 3.8.1
pyenv virtualenv 3.8.1 test
cd /.pyenv/versions/3.8.1/envs/test
pyenv local 3.8.1
然后进入/离开/. pyenv/version/3.8.1/envs/test
不会激活停用虚拟环境,我在shell中看不到(test)用户名:~
。我还在那里创建了一个/home/user/test
目录和. python-version
,但仍然进入/离开目录什么也不做。
根据文档:
如果在 shell 中配置了 eval “$(pyenv virtualenv-init -)”,则在进入/离开包含 .python 版本文件的目录时,pyenv-virtualenv 将自动激活/停用虚拟环境,该文件包含有效虚拟环境的名称,如上例所示(例如,venv34 或 3.4.3/envs/venv34)。pyenv 使用 .python 版本文件来表示本地 Python 版本,并且可以使用 pyenv 本地命令创建和删除这些文件。
< br >
所以第一个问题是:为什么这不起作用?为什么虚拟环境在进入/离开包含 .python 版本
文件的目录时没有自动激活/停用?
此外,当我手动激活虚拟env时,Pyenv激活测试
,然后检查Python版本,它打印系统Python版本,而不是来自环境的版本:Python 3.8.1
:
python --version
Python 3.7.6
我只能像这样直接参考Virtual alenv shims Python才能得到正确的Python版本:
which python
/home/andre/.pyenv/shims/python
/home/andre/.pyenv/shims/python --version
Python 3.8.1
无论是否激活virtualenv“测试”,行为都是一样的。我希望在激活“test”之后,命令< code>python - version返回< code>Python 3.8.1
那么第二个问题:为什么pip
和python
在激活/停用虚拟环境时没有切换?
这些是皮恩夫虫子吗?还是我做错了什么?
事实证明,为了在进入/离开目录时自动激活/停用venv
,其中的. python-version
文件必须包含venv名称
而不是与该venv
关联的Python版本
因此,执行:pyenv local 3.8.1
会创建一个. python-version
文件,该文件仅包含Python版本3.8.1
。然后进入/离开包含. python-version
文件的目录将设置/取消设置该文件中指定的Python版本,但不会激活/停用任何venv
。
要创建一个 .python 版本
文件,该文件将同时执行这两项操作:激活虚拟环境并设置 Python 版本,该命令应如下所示:pyenv 本地测试
,其中测试
是使用:pyenv 虚拟env 3.8.1 测试
创建的 venv。
因此,在中将
修复了该问题。完成此操作后,当进入/离开包含3.8.1
更改为
。python版本
.python版本
的目录时,venv
被激活/停用。
但Python版本仍然没有更改为与venv
关联的版本(在本例中3.8.1
>)
然后我发现我的.profile
中有两行导致了这个问题:
alias python=/home/linuxbrew/.linuxbrew/bin/python3
alias pip=/home/linuxbrew/.linuxbrew/bin/pip3
删除这些线后,一切都按预期工作。
我也有类似的问题。解决方案是更改我放在< code>~/中的条目。bashrc。我继续导出变量< code>export PYENV_ROOT="$HOME/。pyenv",并添加了行< code > eval " $(pyenv init-path)" 。
完整运行以下命令,它会将必要的条目添加到您正在使用的用户的 ~/.bashrc
中。
read -r -d '' FILE_CONTENT << 'HEREDOC'
BEGIN
# >>>>>>
# pyenv configurations.
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)" # This only sets up the path stuff.
eval "$(pyenv init -)" # This makes pyenv work in the shell.
eval "$(pyenv virtualenv-init -)" # Enabling virtualenv so it works natively.
# <<<<<<
END
HEREDOC
echo -n "${FILE_CONTENT:6:-3}" | tee -a ~/.bashrc
注意:在Manjaro (Linux,基于Arch)上测试。
谢谢!=D
[参考文献。:https://github.com/pyenv/pyenv-installer,https://github.com/pyenv/pyenv,https://realpython.com/intro-to-pyenv/,https://github . com/pyenv/pyenv-virtualenv/issues/390 # issue comment-852599456,https://www.giters.com/pyenv/pyenv-virtualenv/issues/407]
我做了一个虚拟环境,我可以在命令提示符下激活它,但它不能用my_venv2\脚本\activate.bat激活它,我也不能在py魅力的终端中激活它
不熟悉在虚拟环境中运行Python,会弄乱Django,无法激活虚拟环境。 在过去的4个小时里,试图在本地终端/VS代码上激活虚拟环境(venv),但运气不佳。 避免了“sudo pip install virtualenv”,因为我试图避免以root用户身份安装和使用不同的目录路径等。 使用缓存的virtualenv-20.0.31-py2.py3-none-any.whl(4.9 MB)收集v
问题内容: 我在Windows Server 2008 R2计算机上全新安装了Python 3.3.4。我已经成功地在全球范围内成功安装了最新版本的Setuptools,Pip和Virtualenv: 现在,当我尝试使用设置虚拟环境时,将获得以下堆栈跟踪: 我以前从未见过此错误,并且堆栈跟踪对我没有任何意义。我可以从Python Shell成功。谁能帮我解决这个问题? 更新 当我提供标志时,env
我已经设置了PyCharm,创建了我的虚拟环境(通过虚拟环境命令,或者直接在PyCharm中),并将该环境作为我的解释器激活。一切都很好。 但是,如果我使用“工具,打开终端”打开一个终端,所提供的shell提示符不是使用虚拟env我仍然需要在终端中使用< code > source ~/envs/some env/bin/activate 来激活它。 另一种方法是在外壳中激活环境,并从该环境运行
这份教程是帮助你安装和使用 Python 的包 本指南会告诉你如何安装和使用必要的工具。值得注意的是 Python 可以做许多许多的事情,至于你如何去安装和管理你的依赖可能会根据你项目的不同而不同。这份指南更多是开发和部署网络服务(包括 web 应用),但是这份指南同样适用于帮助你管理任何项目的开发和测试环境。 注意:这份指南是在 Python 3 版本下完成的,如果你由于不可抗拒的原因仍然在使用
想问一下,为什么不能激活我Django项目里面自带的venv虚拟环境? 查询是否存在该路径,可以查到,但执行命令还是不成功 我希望在不新建虚拟环境的情况下,可以告诉我该如何解决这一问题,使其可以使用项目里面自有的虚拟环境。