Python 为什么Pipenv不接受我的Pyenv版本?

Python 为什么Pipenv不接受我的Pyenv版本?,python,pipenv,pyenv,Python,Pipenv,Pyenv,我的系统Python版本是3.8.5,但是我使用pyenv管理另外一个版本3.6.0,以镜像我的项目部署到的服务器版本。我以前使用virtualenv+VirtualEnvRapper来管理我的虚拟环境,但我在pipenv上听到了很多好消息,我想我会尝试一下。在我尝试使用Python 3.6.0之前,一切都很好。流程是这样的: $mkdir测试项目和cd测试项目 $pyenv shell 3.6.0 $pipenv安装django 正在为此项目创建virtualenv… Pipfile:/hom

我的系统Python版本是3.8.5,但是我使用pyenv管理另外一个版本3.6.0,以镜像我的项目部署到的服务器版本。我以前使用virtualenv+VirtualEnvRapper来管理我的虚拟环境,但我在pipenv上听到了很多好消息,我想我会尝试一下。在我尝试使用Python 3.6.0之前,一切都很好。流程是这样的:

$mkdir测试项目和cd测试项目
$pyenv shell 3.6.0
$pipenv安装django
正在为此项目创建virtualenv…
Pipfile:/home/user/projects/test\u project/Pipfile
使用/home/user/.pyenv/shimmes/python(3.6.0)创建virtualenv…
⠸ 创建虚拟环境…在130毫秒内创建虚拟环境CPython3.8.5.final.0-64
创建者CPython3Posix(dest=/home/user/.local/share/virtualenvs/test_project-eAvoynKo-/home/user,clear=False,global=False)
来自AppData的播种器(下载=False,pip=bundle,设置工具=bundle,轮子=bundle,via=copy,app\u data\u dir=/home/user/.local/share/virtualenv)
添加的种子包:pip==20.2.3,setuptools==50.3.0,wheel==0.35.1
激活剂BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonacActivator,XonshaActivator
✔ 成功创建虚拟环境!
回溯(最近一次呼叫最后一次):
文件“/home/user/.pyenv/versions/3.6.0/bin/pipenv”,第11行,在
sys.exit(cli())
文件“/home/user/.pyenv/versions/3.6.0/lib/python3.6/site packages/pipenv/vendor/click/core.py”,第829行,在调用中__
返回self.main(*args,**kwargs)
文件“/home/user/.pyenv/versions/3.6.0/lib/python3.6/site-packages/pipenv/vendor/click/core.py”,第782行,在main中
rv=自调用(ctx)
文件“/home/user/.pyenv/versions/3.6.0/lib/python3.6/site packages/pipenv/vendor/click/core.py”,第1259行,在invoke中
返回进程结果(sub_ctx.command.invoke(sub_ctx))
文件“/home/user/.pyenv/versions/3.6.0/lib/python3.6/site packages/pipenv/vendor/click/core.py”,调用中的第1066行
返回ctx.invoke(self.callback,**ctx.params)
文件“/home/user/.pyenv/versions/3.6.0/lib/python3.6/site packages/pipenv/vendor/click/core.py”,调用中第610行
返回回调(*args,**kwargs)
文件“/home/user/.pyenv/versions/3.6.0/lib/python3.6/site packages/pipenv/vendor/click/decorators.py”,第73行,在新函数中
返回ctx.invoke(f,obj,*args,**kwargs)
文件“/home/user/.pyenv/versions/3.6.0/lib/python3.6/site packages/pipenv/vendor/click/core.py”,调用中第610行
返回回调(*args,**kwargs)
文件“/home/user/.pyenv/versions/3.6.0/lib/python3.6/site packages/pipenv/vendor/click/decorators.py”,第21行,在新函数中
返回f(获取当前上下文(),*args,**kwargs)
文件“/home/user/.pyenv/versions/3.6.0/lib/python3.6/site-packages/pipenv/cli/command.py”,第252行,安装中
site\u包=state.site\u包
文件“/home/user/.pyenv/versions/3.6.0/lib/python3.6/site packages/pipenv/core.py”,第1928行,在do_install中
站点\u包=站点\u包,
文件“/home/user/.pyenv/versions/3.6.0/lib/python3.6/site-packages/pipenv/core.py”,第580行,位于Sure_项目中
pypi_镜像=pypi_镜像,
文件“/home/user/.pyenv/versions/3.6.0/lib/python3.6/site packages/pipenv/core.py”,第512行,在Sure_virtualenv中
python=python,site\u包=site\u包,pypi\u镜像=pypi\u镜像
文件“/home/user/.pyenv/versions/3.6.0/lib/python3.6/site packages/pipenv/core.py”,第986行,在do_create_virtualenv中
打开(项目文件名,“w”)作为f:
FileNotFoundError:[Errno 2]没有这样的文件或目录:'/home/user/.local/share/virtualenvs/test\u project-eAvoynKo-/home/user/.pyenv/shimmes/python/.project'
我遇到了上一个问题,在我的
.bashrc
文件中设置了环境变量
PIPENV_PYTHON=“$PYENV_ROOT/shimmes/PYTHON
,但没有效果

使用系统Python 3.8.5版可以完美地工作:

$pyenv安装django
正在为此项目创建virtualenv…
Pipfile:/home/user/projects/test\u project/Pipfile
使用/home/user/.pyenv/shimmes/python(3.8.5)创建virtualenv…
⠹ 创建虚拟环境…在114ms内创建虚拟环境CPython3.8.5.final.0-64
创建者CPython3Posix(dest=/home/user/.local/share/virtualenvs/test_project-eAvoynKo-/home/user/.pyenv/shimmes/python,clear=False,global=False)
来自AppData的播种器(下载=False,pip=bundle,设置工具=bundle,轮子=bundle,via=copy,app\u data\u dir=/home/user/.local/share/virtualenv)
添加的种子包:pip==20.2.2,setuptools==50.3.0,wheel==0.35.1
激活剂BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonacActivator,XonshaActivator
✔ 成功创建虚拟环境!
Virtualenv位置:/home/user/.local/share/virtualenvs/test\u project-eAvoynKo-/home/user/.pyenv/chimmes/python
正在为此项目创建PIP文件…
正在安装django…
正在将django添加到Pipfile的[packages]…
✔ 安装成功
找不到Pipfile.lock,正在创建…
正在锁定[开发包]依赖项…
正在锁定[程序包]依赖项…
建筑要求。。。
正在解析依赖项。。。
✔ 成功!
更新了Pipfile.lock(a6086c)!
正在从Pipfile.lock(a6086c)安装依赖项…

pipenv不尊重
pyenv local
pyenv global
()

也许它也不尊重pyenv shell


我通常会按照您所做的那样,指定python,如
pipenv安装--python 3.7

您可以尝试让pipenv遵循Pyenv-python版本:

将Pipenv指向shell配置文件中的Pyenv垫片(这是/.zshrc)

注:

  • 确保在shell配置文件中正确设置了
    PYENV_ROOT

  • 如果使用其他版本的python创建了pipfile和pipfile.lock,则可能需要重新生成它们


  • 答案来自于,和bani(这个问题的另一个答案)。

    是的,正如原始帖子中提到的,设置
    管道
    
    export PIPENV_PYTHON="$PYENV_ROOT/shims/python"