PyCall не может использовать версию python pipenv: InitError: обнаружен несовместимый `libpython` - PullRequest
5 голосов
/ 24 января 2020

Следуя инструкциям в файле readme PyCall.jl , я стараюсь использовать pipenv python при использовании PyCall для моего проекта julia (в его собственной среде).

В терминале я активировал среду python, используя pipenv shell, а затем нашел путь к файлу версии pipenv python. PyCall уже добавлен в манифест в моей среде julia. В терминале, активированном источником, я запустил Джулию и ввел: ENV["PYCALL_JL_RUNTIME_PYTHON"] = pipenv python environment, а затем приступил к запуску Pkg.build("PyCall"), , который устанавливает 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 lib python всегда выдает эту ошибку. Как я могу переопределить или иным образом обойти требование conda для базовой julia?

У меня такое ощущение, что зависимость PyCall от Conda вызывает некоторую проблему libpython, и что вызов ENV["PYCALL_JL_RUNTIME_PYTHON"] не отменяет переменная lib python правильно.

1 Ответ

1 голос
/ 28 января 2020

Согласно документации 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
...