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

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

新規登録して質問してみよう
ただいま回答率
85.46%
MacOS(OSX)

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

Python

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

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

Q&A

解決済

1回答

625閲覧

PythonでOpenseespymacがインポートできない

hugashi_12

総合スコア1

MacOS(OSX)

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

Python

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

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

0グッド

0クリップ

投稿2021/01/01 10:17

前提・実現したいこと

初めて投稿させて頂きます。
研究でPythonライブラリのOpenseespymacを使おうとしているのですが、インポートエラーが出てしまい困っています。
以下に動作環境を示します。

動作環境

MacOS Catalina ver.10.15.7
Homebrew 2.7.1
Case1:pyenv 1.2.21、Python 3.8.6
Case2:Python 3.9.1

Case01

まずpyenv内のPythonで実行した結果が以下です。

試したこと

% where python3 #パスの確認 /Users/host/.pyenv/shims/python3 /Users/host/.pyenv/shims/python3 /usr/local/bin/python3 /usr/bin/python3 % python3 -m pip install openseespymac==11.19.2020 # pipでinstall Collecting openseespymac==11.19.2020 Using cached openseespymac-11.19.2020-py3-none-any.whl (29.5 MB) Installing collected packages: openseespymac Successfully installed openseespymac-11.19.2020 % python3 Python 3.8.6 (default, Dec 30 2020, 19:04:40) [Clang 12.0.0 (clang-1200.0.32.28)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>>import openseespymac.opensees Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: dlopen(/Users/host/.pyenv/versions/3.8.6/lib/python3.8/site-packages/openseespymac/opensees.so, 2): Symbol not found: _PyModule_Create2 Referenced from: /Users/host/.pyenv/versions/3.8.6/lib/python3.8/site-packages/openseespymac/opensees.so Expected in: /System/Library/Frameworks/Python.framework/Versions/2.7/Python in /Users/host/.pyenv/versions/3.8.6/lib/python3.8/site-packages/openseespymac/opensees.so

Case02

困ったので原因を探してみたところ、参考リンク02が見つかったので、Homebrewから直接Pythonをインストールしてみた結果が以下です。
結論からいうと、Case01と同じ結果となってしまいました。

試したこと

% where python3 #パスの確認 /usr/local/bin/python3 /Users/host/.pyenv/shims/python3 /Users/host/.pyenv/shims/python3 /usr/local/bin/python3 /usr/bin/python3 % python3 -m pip install openseespymac==11.19.2020 # pipでinstall Collecting openseespymac==11.19.2020 Using cached openseespymac-11.19.2020-py3-none-any.whl (29.5 MB) Installing collected packages: openseespymac Successfully installed openseespymac-11.19.2020 % python3 Python 3.9.1 (default, Dec 28 2020, 11:24:06) [Clang 12.0.0 (clang-1200.0.32.28)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>>import openseespymac.opensees Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: dlopen(/usr/local/lib/python3.9/site-packages/openseespymac/opensees.so, 2): Symbol not found: _PyModule_Create2 Referenced from: /usr/local/lib/python3.9/site-packages/openseespymac/opensees.so Expected in: /System/Library/Frameworks/Python.framework/Versions/2.7/Python in /usr/local/lib/python3.9/site-packages/openseespymac/opensees.so

疑問

各ケースでそれぞれのPythonを参照するはずだと思うのですが、なぜ/System/Library/Frameworks/Python.framework/Versions/2.7/Pythonを参照してしまうのでしょうか?
どなたかご意見いただけると幸いです。よろしくお願い致します。

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

参考リンク01https://pypi.org/project/openseespymac/11.19.2020/
参考リンク02https://stackoverflow.com/questions/61494932/how-can-i-resolve-the-library-not-loaded-error-with-openseespymac

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

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

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

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

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

jbpb0

2021/01/01 11:08

/System/Library... を含んでる環境変数はありませんか?
hugashi_12

2021/01/02 04:28

> jbpb0さん ありがとうございます。確認してみたところ環境変数に含まれていなかったため、追加してインストール・インポートを行ってみましたが、依然変化なしです。。
hugashi_12

2021/01/02 04:32

> hoshi-takanoriさん ありがとうございます。送っていただいたリンクを参考に確認してみたところ、2.7を参照しているようには見えませんでした。以下に実行結果を示します。 >>> pprint.pprint(sys.path) ['', '/usr/local/Cellar/python@3.9/3.9.1_3/Frameworks/Python.framework/Versions/3.9/lib/python39.zip', '/usr/local/Cellar/python@3.9/3.9.1_3/Frameworks/Python.framework/Versions/3.9/lib/python3.9', '/usr/local/Cellar/python@3.9/3.9.1_3/Frameworks/Python.framework/Versions/3.9/lib/python3.9/lib-dynload', '/usr/local/lib/python3.9/site-packages'] >>> import openseespymac.opensees Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: dlopen(/usr/local/lib/python3.9/site-packages/openseespymac/opensees.so, 2): Symbol not found: _PyModule_Create2 Referenced from: /usr/local/lib/python3.9/site-packages/openseespymac/opensees.so Expected in: /System/Library/Frameworks/Python.framework/Versions/2.7/Python in /usr/local/lib/python3.9/site-packages/openseespymac/opensees.so
hoshi-takanori

2021/01/02 05:01 編集

otool -L (Linux の ldd コマンドに相当) で見ると、opensees.so は /Library/Frameworks/Python.framework/Versions/Current/Python にリンクされてますが、/Library/Frameworks の部分は環境変数 DYLD_FRAMEWORK_PATH で上書きすることができるようです。私の python は brew で入れたものなので、export DYLD_FRAMEWORK_PATH=/usr/local/opt/python/Frameworks としたら、とりあえず import openseespymac.opensees は成功しました。(openseespymac の使い方は知らないので、ちゃんと使えるかは知りませんが。)
hugashi_12

2021/01/02 07:38 編集

> hoshi-takanoriさん 教えて頂いたように環境変数を加えてみたところ無事インポートすることができ、問題なく使えるようになりました。 一人ではどうにもならなかったので大変助かりました。ありがとうございました。 hoshi-takanoriさんの回答をベストアンサーとしたいので、お手隙の際に回答欄に入力していただければと思います。
guest

回答1

0

ベストアンサー

opensees.so は /Library/Frameworks/Python.framework/Versions/Current/Python にリンクされていますが、環境変数 DYLD_FRAMEWORK_PATH を設定すれば上書きできるようです。
(なお、他のアプリに悪影響が出るかもしれないので、.bashrc とかには書かずに、目的のアプリの起動スクリプトとかに書いた方がいいかも。)

参考: niw.at - アプリが使うFrameworkとかを置き換える方法

export DYLD_FRAMEWORK_PATH=/usr/local/opt/python/Frameworks

投稿2021/01/02 10:04

編集2021/01/02 10:06
hoshi-takanori

総合スコア7895

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問