質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

2229閲覧

.bash_profile:パスが通っていないエラーによりpythonのライブラリdglがimportできません

shinaqua

総合スコア5

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/06/13 18:50

編集2020/06/15 01:21

前提・実現したいこと

pythonのグラフニューラルネット用ライブラリdglをjupyter notebook上でimportしようとしましたところ、エラーが発生しました。
どうやらパスが通っていないのですが、.bash_profileに何を書き込めばいいのかわからず困っています。

dglはconda installしたばかりでまだ一度も正常に使えたことはありません(急に使えなくなったわけではありません)。

OSはmacOS High Sierra ver.10.13.6です。

.bash_profileに何を書き込めばいいのか、教えていただけないでしょうか。何卒よろしくお願いいたします。

発生している問題・エラーメッセージ

Using backend: pytorch --------------------------------------------------------------------------- OSError Traceback (most recent call last) <ipython-input-2-fd726d2cda90> in <module> ----> 1 import dgl ~/opt/anaconda3/lib/python3.7/site-packages/dgl/__init__.py in <module> 6 # Need to ensure that the backend framework is imported before load dgl libs, 7 # otherwise weird cuda problem happens ----> 8 from .backend import load_backend, backend_name 9 10 from . import function ~/opt/anaconda3/lib/python3.7/site-packages/dgl/backend/__init__.py in <module> 72 73 ---> 74 load_backend(get_preferred_backend()) 75 76 ~/opt/anaconda3/lib/python3.7/site-packages/dgl/backend/__init__.py in load_backend(mod_name) 22 def load_backend(mod_name): 23 print('Using backend: %s' % mod_name, file=sys.stderr) ---> 24 mod = importlib.import_module('.%s' % mod_name, __name__) 25 thismod = sys.modules[__name__] 26 for api in backend.__dict__.keys(): ~/opt/anaconda3/lib/python3.7/importlib/__init__.py in import_module(name, package) 125 break 126 level += 1 --> 127 return _bootstrap._gcd_import(name[level:], package, level) 128 129 ~/opt/anaconda3/lib/python3.7/site-packages/dgl/backend/pytorch/__init__.py in <module> ----> 1 from .tensor import * ~/opt/anaconda3/lib/python3.7/site-packages/dgl/backend/pytorch/tensor.py in <module> 8 from torch.utils import dlpack 9 ---> 10 from ... import ndarray as nd 11 from ... import kernel as K 12 from ...function.base import TargetCode ~/opt/anaconda3/lib/python3.7/site-packages/dgl/ndarray.py in <module> 12 import numpy as _np 13 ---> 14 from ._ffi.object import register_object, ObjectBase 15 from ._ffi.function import _init_api 16 from ._ffi.ndarray import DGLContext, DGLType, NDArrayBase ~/opt/anaconda3/lib/python3.7/site-packages/dgl/_ffi/object.py in <module> 6 import sys 7 from .. import _api_internal ----> 8 from .object_generic import ObjectGeneric, convert_to_object 9 from .base import _LIB, check_call, c_str, py_str, _FFI_MODE 10 ~/opt/anaconda3/lib/python3.7/site-packages/dgl/_ffi/object_generic.py in <module> 5 from numbers import Number, Integral 6 from .. import _api_internal ----> 7 from .base import string_types 8 9 # Object base class ~/opt/anaconda3/lib/python3.7/site-packages/dgl/_ffi/base.py in <module> 40 __version__ = libinfo.__version__ 41 # library instance of nnvm ---> 42 _LIB, _LIB_NAME = _load_lib() 43 44 # The FFI mode of DGL ~/opt/anaconda3/lib/python3.7/site-packages/dgl/_ffi/base.py in _load_lib() 32 """Load libary by searching possible path.""" 33 lib_path = libinfo.find_lib_path() ---> 34 lib = ctypes.CDLL(lib_path[0], ctypes.RTLD_GLOBAL) 35 # DMatrix functions 36 lib.DGLGetLastError.restype = ctypes.c_char_p ~/opt/anaconda3/lib/python3.7/ctypes/__init__.py in __init__(self, name, mode, handle, use_errno, use_last_error) 362 363 if handle is None: --> 364 self._handle = _dlopen(self._name, mode) 365 else: 366 self._handle = handle OSError: dlopen(/Users/admin/opt/anaconda3/lib/python3.7/site-packages/dgl/libdgl.dylib, 10): Symbol not found: ____chkstk_darwin Referenced from: /Users/admin/opt/anaconda3/lib/python3.7/site-packages/dgl/libdgl.dylib (which was built for Mac OS X 10.15) Expected in: /usr/lib/libSystem.B.dylib in /Users/admin/opt/anaconda3/lib/python3.7/site-packages/dgl/libdgl.dylib

該当のソースコード

python

1import dgl

試したこと

エラーメッセージを見ると、どうやら"/usr/lib/libSystem.B.dylib"に欲しいファイルがあるようです。実際に/usr/lib/へ行くとlibSystem.B.dylibというファイルが存在しました。
そして、こういう場合はパスが通っていないので、.bash_profileにPATHを書き込まないといけないのかなと考え、.bash_profileに

bash

1export PATH="/usr/lib:$PATH"

とテキストエディタより書き込み、保存して

terminal

1$ source ~/.bash_profile

しました。

terminal

1$ echo $PATH

を実行して/usr/libが出力に存在することを確認したのち、もう一度jupyter notebookよりimport dglを行ったのですが、同様のエラーが出てしまいました。
.bash_profileに何を書き込めば良いのでしょうか。

回答いただいたことを参考に試したこと

######1.PATH→PYTHONPATHに書き換え

bash

1export PYTHONPATH="/usr/lib:$PYTHONPATH"

とテキストエディタより書き込み、保存して

terminal

1$ source ~/.bash_profile

しました。

terminal

1$ echo $PYTHONPATH

を実行して/usr/libが出力に存在することを確認したのち、もう一度jupyter notebookよりimport dglを行ったのですが、同様のエラーが出てしまいました。
######2.sys.path.append("/usr/lib/")

python

1import sys 2sys.path.append("/usr/lib/")

を実行し、import dglを行ったのですが、同様のエラーが発生しました。

ライブラリdglのインストール方法に関する追記

dglの公式documentationを参考に、

terminal

1$ conda install -c dglteam dgl

としました。
出力は以下のようでした。

Collecting package metadata (current_repodata.json): done Solving environment: / The environment is inconsistent, please check the package plan carefully The following packages are causing the inconsistency: - defaults/osx-64::spyder==4.0.1=py37_0 - defaults/noarch::sphinx==2.4.0=py_0 - defaults/noarch::numpydoc==0.9.2=py_0 - defaults/osx-64::anaconda==2020.02=py37_0 done ## Package Plan ## environment location: /Users/admin/opt/anaconda3 added / updated specs: - dgl The following packages will be downloaded: package | build ---------------------------|----------------- dgl-0.4.3post2 | py37_0 2.8 MB dglteam docutils-0.16 | py37_1 667 KB ------------------------------------------------------------ Total: 3.5 MB The following NEW packages will be INSTALLED: _anaconda_depends pkgs/main/osx-64::_anaconda_depends-2020.02-py37_0 dgl dglteam/osx-64::dgl-0.4.3post2-py37_0 docutils pkgs/main/osx-64::docutils-0.16-py37_1 The following packages will be UPDATED: certifi 2019.11.28-py37_0 --> 2020.4.5.1-py37_0 openssl 1.1.1d-h1de35cc_4 --> 1.1.1g-h1de35cc_0 The following packages will be DOWNGRADED: anaconda 2020.02-py37_0 --> custom-py37_1 Proceed ([y]/n)? y Downloading and Extracting Packages dgl-0.4.3post2 | 2.8 MB | ##################################### | 100% docutils-0.16 | 667 KB | ##################################### | 100% Preparing transaction: done Verifying transaction: done Executing transaction: done

補足情報(FW/ツールのバージョンなど)

OS:macOS High Sierra ver.10.13.6
Pythonのバージョン:3.7
Anacondaのバージョン:4.8.3
Pytorchのバージョン:1.5.0
dglのバージョン:0.4.3
.bash_profileの存在するパス:/Users/admin/.bash_profile

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2020/06/14 07:32

dglはどうやってインストールしたんでしょう?
shinaqua

2020/06/14 13:58

追記修正依頼をいただきありがとうございます。質問に追記いたしました。 dglの公式documentationを参考に、 $ conda install -c dglteam dgl としました。
guest

回答2

0

ベストアンサー

手元にmacOS 10.13.6がありましたので試したところ、同様のエラーメッセージが表示されました。エラーメッセージの最終行近くに

terminal

1site-packages/dgl/libdgl.dylib (which was built for Mac OS X 10.15)

とありますので、お使いのmacOS(10.13.6)ではcondaによるバイナリインストールでは解決しないように思います。そのためソースコードからインストールする方法を提案します。

一連の手順を書きますので試して見て下さい(/Users/admin/workというディレクトリでの作業を想定)。

terminal

1[/Users/admin/work]$ git clone --recurse-submodules https://github.com/dmlc/dgl.git 2[/Users/admin/work]$ cd dgl 3[/Users/admin/work/dgl]$ mkdir build 4[/Users/admin/work/dgl]$ cd build 5[/Users/admin/work/dgl/build]$ cmake -DUSE_OPENMP=OFF .. 6[/Users/admin/work/dgl/build]$ make 7[/Users/admin/work/dgl/build]$ conda activate あなたの環境 8[/Users/admin/work/dgl/build]$ cd ../python 9[/Users/admin/work/dgl/python]$ python setup.py install

上記のようにインストールしたところ、一応起動までは確認できました。

terminal

1$ python 2Python 3.8.3 (default, May 19 2020, 13:54:14) 3[Clang 10.0.0 ] :: Anaconda, Inc. on darwin 4Type "help", "copyright", "credits" or "license" for more information. 5>>> import dgl 6Using backend: pytorch 7>>> dgl.__version__ 8'0.4' 9>>>

投稿2020/06/14 22:21

yymmt

総合スコア1615

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shinaqua

2020/06/15 01:26

解決いたしました!ありがとうございます! 非常に丁寧に教えてくださり、また、ご自身のローカルにdglをinstallまでしていただくなどお手数をおかけしてしまい大変申し訳ありませんでした。助かりました。ありがとうございます。 同様の問題が出た方がいらっしゃった場合向けの情報なのですが、yymmtさんの解決策を試した後、作業ディレクトリが /Users/admin/work /Users/admin/work/dgl の場合は(質問に記載してある、Symbol not foundの)エラーが発生し、 /Users/admin/work/dgl/python で作業を行うと、問題が解決いたしました。
guest

0

投稿2020/06/13 22:40

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shinaqua

2020/06/14 03:10

回答をいただきありがとうございます。紹介いただいたサイトを参考にしてsys.path.appendと.bash_profileへの書き込みどちらもやってみたのですが、同じエラーが発生してしまいました。回答いただいたことを参考に試したことの詳細は質問に追記いたしました。 書き方がどう悪かったのでしょうか。どの記述をどう変えれば問題解決に繋がるでしょうか。ご教授いただければ幸いです。 読みづらいですが、こちらにも追記内容を記述させていただきます。 export PYTHONPATH="/usr/lib:$PYTHONPATH" と.bash_profileに書き込み$ source ~/.bash_profile したのですが、同様のエラーが発生しました。 また、 sys.path.append(“/usr/lib/“) としたのですが、同様のエラーが発生しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問