JuliaPy / JuliaPy/PyCall.jl

pyimport("pyvista") problem

オープン
#920 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

主要言語
Julia
スター
1.5k
フォーク
186
PR マージ指標
30日以内にマージされた PR はありません

説明

Description

I encounter a problem that when calling PyVista through PyCall by using PyCall; pv = pyimport("pyvista"), whereas there is no problem when directly use pyvista in python. I do use the same conda env for both python and Julia (/lustre/home/.julia/adcme/bin/python). I have tested setting ENV["PYTHON"] or Conda.add way or
pip install pyvista==0.30.0rc1 or conda install -c conda-forge pyvista or conda install -c conda-forge xvfbwrapper, then rebuilding PyCall and restarting Julia etc., but the problem remains.

The errors are as below.

The Python package pyvista could not be imported by pyimport. Usually this means
that you did not install pyvista in the Python version being used by PyCall.

PyCall is currently configured to use the Python version at:

/lustre/home/.julia/adcme/bin/python

and you should use whatever mechanism you usually use (apt-get, pip, conda,
etcetera) to install the Python package containing the pyvista module.

One alternative is to re-configure PyCall to use a different Python
version on your system: set ENV["PYTHON"] to the path/name of the python
executable you want to use, run Pkg.build("PyCall"), and re-launch Julia.

Another alternative is to configure PyCall to use a Julia-specific Python
distribution via the Conda.jl package (which installs a private Anaconda
Python distribution), which has the advantage that packages can be installed
and kept up-to-date via Julia.  As explained in the PyCall documentation,
set ENV["PYTHON"]="", run Pkg.build("PyCall"), and re-launch Julia. Then,
To install the pyvista module, you can use `pyimport_conda("pyvista", PKG)`,
where PKG is the Anaconda package that contains the module pyvista,
or alternatively you can use the Conda package directly (via
`using Conda` followed by `Conda.add` etcetera).

) <class 'ImportError'>
ImportError('libX11.so.6: cannot open shared object file: No such file or directory')
  File "/lustre/home/.julia/adcme/lib/python3.7/site-packages/pyvista/__init__.py", line 11, in <module>
    from pyvista.plotting import *
  File "/lustre/home/.julia/adcme/lib/python3.7/site-packages/pyvista/plotting/__init__.py", line 7, in <module>
    from .helpers import plot, plot_arrows, plot_compare_four, plot_itk
  File "/lustre/home/.julia/adcme/lib/python3.7/site-packages/pyvista/plotting/helpers.py", line 7, in <module>
    from pyvista.utilities import is_pyvista_dataset
  File "/lustre/home/.julia/adcme/lib/python3.7/site-packages/pyvista/utilities/__init__.py", line 2, in <module>
    from .errors import (GPUInfo, Observer, Report,
  File "/lustre/home/.julia/adcme/lib/python3.7/site-packages/pyvista/utilities/errors.py", line 12, in <module>
    from pyvista import _vtk
  File "/lustre/home/.julia/adcme/lib/python3.7/site-packages/pyvista/_vtk.py", line 41, in <module>
    from vtkmodules.vtkRenderingVolumeOpenGL2 import (vtkOpenGLGPUVolumeRayCastMapper,

Stacktrace:
 [1] pyimport(name::String)
   @ PyCall /lustre/home/.julia/packages/PyCall/BD546/src/PyCall.jl:550
 [2] top-level scope
   @ REPL[5]:1

I use Julia through singularity exec julia_latest.sif julia. I am working on an HPC cluster without sudo privilege.

Thanks.

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

PyCall/src/PyCall.jl:550 に示されている pyimport エントリポイントから開始し、報告された Python 環境で using PyCall; pyimport("pyvista") を再現してください。報告された libX11.so.6 ImportError と Singularity/HPC の構成を調査してください。対応している構成、またはインポートを成功させる具体的な PyCall の変更を特定できれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
python
領域
tooling
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
20/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。