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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Debian

Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。

Q&A

解決済

1回答

2228閲覧

jupyter notebook のエラー -- ImportError: ./my_func.so: invalid ELF header

simasima

総合スコア49

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Debian

Debianは、Debian GNU/Linux などのOS(オペレーティングシステム)です。

0グッド

0クリップ

投稿2016/12/03 00:35

Dockerを用いて, jupyter/datascience-notebook (debian:jessieがベース)の上に,今までmacOS上で行っていた jupyterの作業を行おうとしたのですが,

shell

1ImportErrorTraceback (most recent call last) 2<ipython-input-1-ee98d8f91af9> in <module>() 3 35 # 自作外部ファイル 4 36 # $PYTHON_PROGRAM/my_func.pyx 5---> 37 import my_func as mf 6 38 # $PYTHON_PROGRAM/my_setting.py 7 39 import my_setting as st 8 9ImportError: ./my_func.so: invalid ELF header

とのエラーが出てしまいました.
ご教授いただけると助かります.

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

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

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

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

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

guest

回答1

0

ベストアンサー

my_func.soをコンパイルし直す必要があるのではないでしょうか?

投稿2016/12/03 01:56

編集2016/12/03 01:58
MasashiKimura

総合スコア1150

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

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

simasima

2016/12/03 04:03

ありがとうございます. mac上でコンパイルしたものをそのままDocker上の環境に利用したのことが問題のようでした. その点は理解したのですが,DockerのDebian上でコンパイルをすると,以下のようなコメントが返ってきます. jovyan@be53e2c81a6a:/notebooks$ python setup.py build_ext --inplace running build_ext skipping 'my_func.c' Cython extension (up-to-date) building 'my_func' extension creating build/temp.linux-x86_64-3.5 gcc -pthread -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/opt/conda/include/python3.5m -c my_func.c -o build/temp.linux-x86_64-3.5/my_func.o gcc -pthread -shared -L/opt/conda/lib -Wl,-rpath=/opt/conda/lib,--no-as-needed build/temp.linux-x86_64-3.5/my_func.o -L/opt/conda/lib -lpython3.5m -o /notebooks/my_func.cpython-35m-x86_64-linux-gnu.so そして,jupyterでプログラムを動かすと ImportError: No module named my_func となります. どうやら skipping 'my_func.c' Cython extension (up-to-date) にあるように,Cythonの手順がスキップされているためだと考えられるのですが... よくわかりません...
MasashiKimura

2016/12/03 04:07

一度 my_func.so を消す必要があるのだと思います。
simasima

2016/12/03 04:16

それは行ってみたのですが,うまくいきません...
MasashiKimura

2016/12/03 04:19

うーん、 touch my_func.c とかどうでしょうか?
simasima

2016/12/03 04:25

うまくいかないですね... 相変わらず my_func モジュールがないと言われてしまいます.
MasashiKimura

2016/12/03 04:27

ひょっとして、PYTHON_PATHを設定していないのではないでしょうか?
MasashiKimura

2016/12/03 04:30

あとは、ファイル名が気になりますね。 /notebooks/my_func.cpython-35m-x86_64-linux-gnu.so これを my_func.so に変えてみてはどうでしょう?
simasima

2016/12/03 04:35

そうですね!python2系と3系が混ざっていることが問題かもしれません. 頑張ってみます
MasashiKimura

2016/12/03 04:37

そういえば 35mって書いてますね。(今気づいた)
simasima

2016/12/03 05:24 編集

うまくいきました! python2系のcythonが入っていなかったので, sudo apt-get install cython として導入したのち,ちゃんとパスをpython2.7の方に通して python setup.py build_ext --inplace としたらできました. ありがとうございます! ちなみに python3系は sudo apt-get install cython3 2系は RUN sudo apt-get install cython なのですね,知りませんでした.
simasima

2016/12/03 05:26

ちなみに python3系は sudo apt-get install cython3 2系は RUN sudo apt-get install cython なのですね,知りませんでした...
simasima

2016/12/03 09:01

追記です。いつか同じことでハマった人のために Cythoning の手順がスキップする問題ですが、setup.cfg というファイルに [build_ext] force=1 と書いて保存したところ、スキップされなくなりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問