LoginSignup
11
9

More than 5 years have passed since last update.

pyenvでインストールしたAnaconda-PythonをopenFrameworksから使う

Posted at

アドオンを使いつつpyenvのPythonを利用したい

openFrameworksで作成するソフトウェアから普通にPythonを利用するには、chaosctさんのofxPythonや、satoruhigaさんのofxPyを使うのが楽っぽいですが、OSX上でpyenvを使ってインストールしたAnacondaパッケージのなかのPythonを使ってみたかったので、トライしてみました。

ここでは、ofxPyを利用してOSX上でoF0.9.8を使っています。導入するのはAnaconda3-4.3.1に付属するPython3.6.1です。

プロジェクトの作成と調整

僕の場合は、普通にproject-generatorでアプリを作りました。ofxPyはもちろん追加済み。
プロジェクトを開いて、まずPythonライブラリを投入します。
インストールディレクトリが/Users/me/.pyenv/versions/anaconda3-4.3.1なので、その中のlibディレクトリにある「libpython3.6m.dylib」をドラッグ&ドロップします。このとき、オプションでプロジェクトディレクトリにライブラリファイルをコピーするかどうかを聞かれますが、コピーしなくていいです。
pyenv-of-01.jpeg

つぎに、プロジェクトのbuild settingsを編集します。
Header Search Pathsに以下を追加します。ディレクトリは適宜利用されているanacondaのインストールディレクトリに読み替えてください。
/Users/me/.pyenv/versions/anaconda3-4.3.1/include
/Users/me/.pyenv/versions/anaconda3-4.3.1/include/python3.6m

続いて、Library Search Paths
/Users/me/.pyenv/versions/anaconda3-4.3.1/lib

さらに、実行時に「ライブラリが無い」と言われるのを防ぐために、Runpath Search Pathsにも同様のパスを設定します。
/Users/me/.pyenv/versions/anaconda3-4.3.1/lib

プロジェクトのbuild phasesでは、Copy Filesに「libpython3.6m.dylib」を追加します。僕の場合はただ追加するだけで、DestinationやSubpathなどの設定はしませんでした。

テストコード

基本的にはofxPyのエグザンプルファイルが動けばいいですが、動作チェックだけなら以下のコードでエラーが出なければ成功ということになると思います。
重要なのは、$PYTHONHOMEを設定して、というメッセージがでてPythonが使えないことがあるので、putenv関数でプログラム内の環境変数にPythonのホーム(=Anacondaディレクトリ)へのパスを指定しておくことです。

ofApp.h
#pragma once

#include "ofMain.h"
#include "ofxPy.h"

class ofApp : public ofBaseApp{

    public:
        void setup();
        void update();
        void draw();

    ofxPy::Context  python;
};
ofApp.cpp
#include "ofApp.h"

//--------------------------------------------------------------
void ofApp::setup(){
    ofSetFrameRate(0);
    ofSetVerticalSync(false);
    ofBackground(0);

    putenv((char *)"PYTHONHOME=/Users/me/.pyenv/versions/anaconda3-4.3.1");
    python.setup();
}

以上で、つかえるはず。

11
9
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9