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

在终端中,我使用pipenv shell激活了python环境,然后找到了pipenv版本的python的路径文件。 PyCall已被添加到我的julia环境中的 list 中。在源代码激活的终端中,我启动了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总是抛出此错误。我该如何替代或以其他方式解决基本 Julia 的conda要求?

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

最佳答案

根据文档,PyCall支持 venv virtualenv 环境,但是您正在使用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

关于python - PyCall无法使用pipenv版本的Python InitError :Incompatible `libpython` detected,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59889778/

10-10 14:11