我在最新的debian测试发行版中安装了pyenv,并且其中包含python 2.7.1。
我为此版本的项目创建了一个virtualenv,但是在激活后,它为我提供了python系统版本(3.7)。
这是我所做的:
$ pyenv virtualenv 2.7.16 my_project-2.7
Requirement already satisfied: virtualenv in /home/user/.local/lib/python2.7/site-packages (15.1.0)
You are using pip version 18.1, however version 19.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Using base prefix '/usr'
New python executable in /home/user/.pyenv/versions/2.7.16/envs/my_project-2.7/bin/python
Installing setuptools, pip, wheel...
done.
Installing pip from https://bootstrap.pypa.io/get-pip.py...
Collecting pip
Using cached https://files.pythonhosted.org/packages/5c/e0/be401c003291b56efc55aeba6a80ab790d3d4cece2778288d65323009420/pip-19.1.1-py2.py3-none-any.whl
Installing collected packages: pip
Found existing installation: pip 19.1.1
Uninstalling pip-19.1.1:
Successfully uninstalled pip-19.1.1
Successfully installed pip-19.1.1
$ pyenv activate my_project-2.7
pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.
$ python --version
Python 3.7.3
$ pip --version
pip 19.1.1 from /home/user/.pyenv/versions/2.7.16/envs/my_project-2.7/lib/python3.7/site-packages/pip (python 3.7)
这很奇怪。将virtualenv正确设置为〜/ .pyenv / version / 2.7.16,但我可以看到pip来自/home/user/.pyenv/versions/2.7.16/envs/my_project-2.7/lib/python3.7 /
我想我错过了一些东西,或者我的python安装过程中可能有些混乱,但是我无法找到python3.7 lib在这里做什么。
如何为python2.7创建此virtualenv?
我试图完全删除pyenv(删除$(pyenv根目录)目录,然后使用pyenv-installer重新安装它,但是它没有任何改变。
我为我拥有的两个项目(上述2.7和3.5中的一个)创建了两个virtualenv。
$ pyenv virtualenvs 2.7.16 / envs / my_project-2.7(从/ usr创建) 3.6.8 / envs / other_project-3.6(从/home/user/.pyenv/versions/3.6.8创建) my_project-2.7(从/ usr创建) other_project-3.6(从/home/user/.pyenv/versions/3.6.8创建)
我认为可以从/ usr 创建的中找到问题,但是我不明白这是什么意思。为什么未从pyenv python版本创建此virtualenv?真的有关系吗?
似乎当我创建3. +虚拟环境时,会使用 venv 。但是在2.7上,使用virtualenv并失败。
答案 0 :(得分:0)
如果我根据链接的说明从头开始安装pyenv
和pyenv-virtualenv
,则为WFM。
我可以看到
pip
来自/home/user/.pyenv/versions/2.7.16/envs/my_project-2.7/lib/python3.7/
这表明,很可能该虚拟环境已经存在并且具有错误的Python版本。
我只能猜出它最终是如何变成这样的。最有可能的是,您正在手动弄混virtualenv或pyenv
envvar。或运行脚本/在bash stratup脚本中执行某些操作。例如。如果您使用pyenv-virtualenv
命令来管理环境,则不应将它们与常规virtualenv
命令混合使用。
使用pyenv virtualenv-delete my_project-2.7
删除此virtualenv,然后重新创建它会有所帮助。
否则,请从启动脚本中删除~/.pyenv
和所有相关内容,重新启动Shell并重新安装pyenv
和pyenv-virtualenv
。
为了减少破坏性的修复,您需要仔细检查您的shell环境(envvar,别名,已定义的shell函数)和启动脚本,以查找可能与pyenv
的工作冲突的所有内容;如果那没有帮助,请debug pyenv
machinery(export PS4='+(${BASH_SOURCE}:${LINENO}): ${FUNCNAME[0]:+${FUNCNAME[0]}(): }'
在这里有很大帮助)找出正在发生的事情。