PyCall无法使用python InitError的pipenv版本:检测到不兼容的`libpython`

问题描述 投票:5回答:1

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

[在终端中,我已经使用pipenv shell激活了python环境,然后找到了pipenv版本的python的路径文件。 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\3\python.exe is:
    C:\Users\me\.julia\conda\3\python36.dll
PyCall.jl only supports loading Python environment using the same `libpython`

我尝试重新安装PyCall,但是python环境libpython总是抛出此错误。我该如何替代或以其他方式解决基本茱莉亚的conda要求?

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

python julia pipenv pycall
1个回答
1
投票

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

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

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

然后运行:

julia> using Pkg; Pkg.build("PyCall"); using PyCall
© www.soinside.com 2019 - 2024. All rights reserved.