EDITなし:How to embed Python3 with the standard library埋め込みのpython3は、標準ライブラリ
Python2のためのソリューションがここで提供されています:
Fatal Python error: Py_Initialize: unable to load the file system
codec ImportError: No module named 'encodings'
:
Is it possible to embed python without the standard library?
しかし、のpython3がでPy_Initialize();
に失敗した私はここに反対質問をしてきました
py3ソースファイルはデフォルトでutf-8なのでこれは意味があります。したがって、py3ソースファイルを解析するために外部バイナリが必要なようです。
どうすればよいですか?
システムのPythonインストールでencodings
バイナリを見つけて、私のプロジェクトツリーにコピーし、環境変数PYTHONPATH(?)を設定してlibpython.dylibが見つけられるようにします。
これを回避することはできますか?もしそうでなければ、誰かが私が取る必要のあるステップを明確にすることができますか?それ以上のしゃっくりがありますか?
注:私は私のシステムのPythonのライブラリを見つけ
まず:/usr/local/Frameworks/Python.framework/Versions/3.4/Python
(私の場合はそれがあった後世のために、これは私はOSX上の私のプロジェクトへのリンクlibpython.dylibスタンドアロン得た方法でありますhomebrewと一緒にインストールされます)。
は今:
コピー
build settings -> linking
に./Libs/libpython3.4.1_OSX.dylib
ゴーを作成する私のプロジェクトフォルダには.dylibとは、それが表示されます。この時点で
-lpython3.4.1_OSX
にother linker flags
を設定しました働くしかし、新しいOSXインストールでビルドしようとするなら、それは失敗します。これは、次の理由によるものです。
$ otool -D ./libpython3.4.1_OSX.dylib
./libpython3.4.1_OSX.dylib:
/usr/local/Frameworks/Python.framework/Versions/3.4/Python
.dylibはまだその古い場所を保持しています。 .dylibには、その場所へのリンクが含まれています。その場所を使用するものは、最初に呼び出すためにどこにあるのかを知る必要があります。
我々はでこれを修正することができます。
$ install_name_tool -id @rpath/libpython3.4.1_OSX.dylib libpython3.4.1_OSX.dylib
しかし、その後も、当社のXcodeプロジェクトで、私たちはしなければならない:
- は
build phases
に移動します。copy files
ステップを追加して、libpython3.4.1_OSX.dylib
をFrameworks
にコピーします(これは正しい場所です)。 build settings -> linking
に入り、最後に、私は私がまたPYTHONPATH
を追加する必要があります。この作業を取得することを疑うedit scheme -> run -> arguments -> environment variables
に入ると値../Frameworks
で
PYTHONHOME
を追加する必要が@executable_path/../Frameworks/libpython3.4.1_OSX.dylib
にrunpath search paths
を設定
リンク:
https://mikeash.com/pyblog/friday-qa-2009-11-06-linking-and-install-names.html
http://qin.laya.com/tech_coding_help/dylib_linking.html
https://github.com/conda/conda-build/issues/279#issuecomment-67241554
Can you please help me understand how Mach-O libraries work in Mac Os X?
http://nshipster.com/launch-arguments-and-environment-variables/
私はもっと多くの要件があることを恐れています。モジュールのインポートは、例えば、 'importlib'パッケージによって処理されます。私は、Python 3がstdlibを少なくとも削除することはできないと思っています。 –
'encodings'はプログラムではありません。これはpythonパッケージ – ppperry
py2appのランチャーコードのソースを読んでみてください。 OS XとPythonを起動して稼働させることについて多くのことを知っています。 –