为什么我不能“停用”pyenv / virtualenv?如何“修复”安装

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么我不能“停用”pyenv / virtualenv?如何“修复”安装相关的知识,希望对你有一定的参考价值。

我在新安装的Ubuntu 16.04上,为了使用最新版本的pandas进行开发,我使用虚拟环境安装了Python 3.6.0。

选择3.6.0的一个原因是因为我读到某个地方,这个版本的Python本身可以处理虚拟环境,即没有安装任何其他东西[无论如何安装3.6.0本身而不替换系统范围的Python,这几乎肯定是错了,我实际上不得不提供虚拟环境]。

我乐观地认为一切都会朝着正确的方向发展(包括我的知识),所以,不要过多关注:pyenv,pyenv-virtualenv,pyvenv等之间的差异...所以我不记得很清楚我安装了,无论如何我只使用aptpip / pip3,试图限制virtualenv中的变化一旦它可用

我松散地跟着这个tutorial,除了(也许)我没有为virtualenvs($ mkdir ~/.virtualenvs命令)创建一个目录。

现在我的用户被卡在(general)环境中,我无法离开。

情况

从登录开始,没有激活任何环境,bash给我一个修改过的提示,似乎我无法得到deactivatesource deactivate等通常的提示...

(general) $ deactivate
pyenv-virtualenv: deactivate must be sourced. Run 'source deactivate' instead of 'deactivate'
(general) $ source deactivate
pyenv-virtualenv: deactivate 3.6.0/envs/general
(general) $ pyvenv deactivate
pyenv: pyvenv: command not found

The `pyvenv` command exists in these Python versions: 3.6.0

(general) $ 

您看到(general)前缀仍保留在提示中。

我也有这个pyenv / virtualenv设置正在影响系统活动的症状(例如,当尝试从命令行安装hplip时,安装程​​序在尝试识别我的操作系统时感到困惑,最终失败了 - 我不得不从另一个用户那里做到这一点,然后它工作),所以我需要将其恢复到一个干净的状态。

NB。我不确定我的安装是否真的错了,也许只是我发出了错误的命令或者我遇到的一些常见陷阱。

问题

  • 我怎么能deactivate(一般)环境
  • 如何判断我的安装是否错误,以及如何修复它
  • 我怎样才能安全地从这个安装中恢复并获得更合适的安装?

我已经读过这个question,但它与我的情况没有关系

This one似乎更相关,因为它突出了a)python venv应该是首选; b)它可用于Python> = 3.3,c)ubuntu-xenial没有已经由deafult安装它,d)它给出了包名称来安装它。

但是我仍然不确定在安装之前要卸载什么以防万一。

更多信息

以下是TAB完成,命令和目录列表的输出,以显示我所处的环境:

(general) $ cat .py <TAB>
.pyenv/          .python_history  
(general) $ cat .pyenv/ <TAB>
.agignore     completions/  LICENSE       shims/        versions/
bin/          CONDUCT.md    Makefile      src/          .vimrc
cache/        .git/         plugins/      test/         
CHANGELOG.md  .gitignore    pyenv.d/      .travis.yml   
COMMANDS.md   libexec/      README.md     version       
(general) $ cat .pyenv/version
general
(general) $ ls -l ~/.pyenv/versions
totale 12
drwxrwxr-x  3 myuser myuser 4096 apr 20 13:50 ./
drwxrwxr-x 13 myuser myuser 4096 apr 20 13:50 ../
drwxr-xr-x  7 myuser myuser 4096 apr 20 13:50 3.6.0/
lrwxrwxrwx  1 myuser myuser   48 apr 20 13:50 general -> /home/myuser/.pyenv/versions/3.6.0/envs/general/

我尝试列出已安装的内容,但我担心使用pip3 list,我得到的答案是我遇到的env,并且这是掩盖我在安装之前安装的任何内容。

可能只是我错误地从我的主目录安装了pyenv?是否足以删除/移动.pyenv目录?没有问我,我没有足够的信心去做。

答案

DEACTIVATE默认PyEnv General的方法是--pyenv uninstall 3.6.0 / envs / general

(general) dhankar@dhankar-VPCEB44EN:~/.pyenv$ pyenv uninstall 3.6.0/envs/general pyenv-virtualenv: remove /home/dhankar/.pyenv/versions/3.6.0/envs/general? y dhankar@dhankar-VPCEB44EN:~/.pyenv$

双重确保PyENV已被删除 -

dhankar@dhankar-VPCEB44EN:~/.pyenv$ pyenv versions pyenv: version `general' is not installed (set by /home/dhankar/.pyenv/version) system 3.6.0 3.6.5 dhankar@dhankar-VPCEB44EN:~/.pyenv$

还要记录它 - 在Un-Install之前共享同一命令的终端输出。

(general) dhankar@dhankar-VPCEB44EN:~/.pyenv$ pyenv versions system 3.6.0 3.6.0/envs/general 3.6.5 * general (set by /home/dhankar/.pyenv/version) (general) dhankar@dhankar-VPCEB44EN:~/.pyenv$

以上是关于为什么我不能“停用”pyenv / virtualenv?如何“修复”安装的主要内容,如果未能解决你的问题,请参考以下文章

pyenv+virtual 笔记

pyenv local - 尽管已经安装了Python版本,但不能通过它的编号来设置该版本

python虚拟环境—virtual environment

pyenv,轻松切换各种python版本

virtualenv和pyenv是啥关系?

为啥 Virtual Populate 不能在 Node js 和 mongoose 上运行?场景:产品和用户评论