C言語からPythonを埋め込んだ場合に、Py_Initialize()が存在しないエラーが発生する。Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。登録してこのコミュニティに参加するどなたでも質問していただけますどなたでも回答していただけます最もよい回答には賛成票が入り、最上位に上がりますホーム質問タグユーザーC言語からPythonを埋め込んだ場合に、Py_Initialize()が存在しないエラーが発生する。2,224件0始めまして。最近Pythonを始めました。現在C言語で開発を進めており、一部の処理をPythonで行いたいと考えております。こちらの記事を参考にして、Pythonを埋め込んでみました。http://d.hatena.ne.jp/mscp/20090919/1261917834結果から申し上げますと、Py_Initialize()以下独自の関数が存在しないとエラーが発生してしまい、コンパイルできない状態です。Makefileとエラー内容は以下です。1おそらくライブラリがうまく貼れていないのではないかと思うのですが、いまいちやり方がわかりません。どなたか助言よろしくおねがいします。エラーが起きる最低限の形に省略した物で結構です。(testというコマンドはUnixにありますから気を付けて下さい。Debianをお使いですし重々ご承知とは思いますが。13:30ソースは以下になります。掲載するにあたり、test.cおよびtestの実物は別の名称にしております。他のコマンドと重複しないような名称です。testライブラリのパスは指定していますが、肝心のライブラリを指定していません。-lpython2.6かな?(debianのライブラリ名がどうなっているか知らないので、もし違っていたら/usr/lib/python2.6の中を探してみてください)ただ、python-configやpkg-configというコマンドを使ったほうが、適切なコンパイルオプションを指定できますので、そちらを使うことをおすすめします。--ldflags)一応フォローしておくと、上記のコマンドはbash上で実行する場合です。--ldflags)というように「shell」マクロを使ってください。長くなりそうなので、こちらでコメントします。ライブラリのファイル名についてです。gccのライブラリのファイル名は、通常は「libほげ.a」になり、これをリンク時に使用する際には「-lほげ」と指定します。今回探すのは「libpython2.6.a」(もしくは、「libpython*.a」)です。libpython2.6-dev」を実行すると、パッケージのファイル名一覧が表示されます。その中の「libpython2.6.a」を探し、「/usr/lib/python2.6」にあるか確認してください。ディレクトリが違っていたら、「-L/usr/lib/python2.6」を「-L<そのディレクトリ>」に変えて、ビルドしてください。--ldflags」を実行してみて、出力を確認してみてください。「python-config」が実行できなければ、「python-dev」をインストールしてください。'libpython*.a'」を実行してみて、pythonのライブラリファイルを探してみてください。simoneさんの言うとおり、コンパイルは通るんだからライブラリもインストールされているはずなんだがなぁ...。(neurontさんからの指摘があり、python-configの「--libs」を「--ldflags」に変更しました。個の銅バッジご回答ありがとうございました。ご指摘いただきました「/usr/lib/python2.6/」配下に-lpython2.6が見当たりませんでした。python-configもしくはpkg-configを使ってみましたが、同様のエラーが発生してしまいました。何か他に考えられる原因はありますでしょうか。私の環境(Ubuntu)ではpython-configでの方法でコンパイルは通っています。ライブラリは/usr/lib/x86_64-linux-gnu/以下に入っていますね。パッケージpython-devを入れれば自動で色々入るかと。(まあ、エラーの内容からすると必要なパッケージは入っていそうですね。ライブラリを指定すれば解決しそうな物ですが、エラーが変らないというのは不思議です。用いるべきだと思います。オプションも表示されますから。2:05あれれ、ホントだ。pkg-configと同じと考えていた。neurontさん、フォローありがとうございます。|回答スタック・オーバーフローに参加してくれて、ありがとうございます!質問の回答を共有してください。回答を説明し、自分の検討結果も共有してください。意見を述べること(意見を述べるなら、参照リソース、自分の経験で意見をサポートしてください)さらにサポートが必要な場合このヘルプを参考してください。“回答を投稿”をクリックすることで利用規約、プライバシーポリシー、及びクッキーポリシーに同意したものとみなされます。タグが付いた他の質問を参照するか、自分で質問をする。format2標準ライブラリ(ctype.h)のコンパイルエラーについて2Cythonのコンパイルができません。質問のフィードこのRSSフィードを購読するには、このURLをコピーしてRSSリーダーに貼り付けてください。