PyCall unable to use pipenv version of python InitError:Incompatible `libpython` detected

PyCall unable to use pipenv version of python InitError:Incompatible `libpython` detected

Following the instructions on the PyCall.jl readme,在我的 julia 项目(在它自己的环境中)使用 PyCall 时,我打算使用 pipenv python。

在终端中,我使用 pipenv shell 激活了 python 环境,然后找到了 python 的 pipenv 版本的路径文件。 PyCall 已经添加到我的 julia 环境中的清单中。在源激活的终端中,我启动了 Julia 并输入:ENV["PYCALL_JL_RUNTIME_PYTHON"] = pipenv python environment 然后进行到 运行 Pkg.build("PyCall")which installs conda。导入 PyCall 时 - using PyCall - 我收到以下错误。

ERROR: InitError: Incompatible `libpython` detected.
`libpython` for C:\Users\me\.virtualenvs\iap\Scripts\python.exe is:
    C:\Users\me\.virtualenvs\iap\Scripts\python37.dll
`libpython` for C:\Users\me\.julia\conda\python.exe is:
    C:\Users\me\.julia\conda\python36.dll
PyCall.jl only supports loading Python environment using the same `libpython`

我试过重新安装 PyCall,但是 python 环境 libpython 总是抛出这个错误。我如何覆盖或以其他方式解决 base julia 的 conda 要求?

我感觉 PyCall 的 Conda 依赖性导致了一些 libpython 问题,并且 ENV["PYCALL_JL_RUNTIME_PYTHON"] 调用没有正确覆盖 libpython 变量。

根据文档 PyCall 支持 venvvirtualenv 环境,但是您正在使用 pipenv。如果您想使用 PYCALL_JL_RUNTIME_PYTHON 变量,我建议您尝试使用任一受支持的替代方案。

如果您想继续使用 pipenv 环境,您可能必须在 startup.jl 配置文件中指定 PYTHON 变量,如下所示:

ENV["PYTHON"] = "C:\path\to\your\pipenv\python.exe"

然后运行:

julia> using Pkg; Pkg.build("PyCall"); using PyCall