Вставить Python3 без стандартной библиотеки

EDIT: я задал здесь противоположный вопрос: как встраивать Python3 со стандартной библиотекой

Здесь предлагается решение для Python2: возможно ли внедрить питон без стандартной библиотеки?

Однако Python3 терпит неудачу в Py_Initialize(); с:

 Fatal Python error: Py_Initialize: unable to load the file system codec ImportError: No module named 'encodings' 

Это имеет смысл, потому что исходные файлы py3 по умолчанию являются utf-8. Похоже, что для разбора исходных файлов py3 требуется внешний двоичный файл.

Так что делать?

Кажется, мне нужно найти двоичный код encodings в моей системе Python, скопировать это в мое дерево проектов и, возможно, установить некоторую переменную среды PYTHONPATH (?). Так что мой libpython.dylib может ее найти.

Можно ли это избежать? А если нет, может кто-нибудь уточнить шаги, которые мне нужно предпринять? Будут ли еще икоты?


ПРИМЕЧАНИЕ. Для потомков именно так я получил автономный libpython.dylib, связанный с моим проектом в OSX:

Сначала я размещаю свою систему в библиотеке Python: /usr/local/Frameworks/Python.framework/Versions/3.4/Python (в моем случае она была установлена ​​с доморощенным).

Сейчас я:

  • скопируйте .dylib в мою папку проекта, создав ./Libs/libpython3.4.1_OSX.dylib

  • Перейти к build settings -> linking и установка other linker flags на -lpython3.4.1_OSX

На данный момент он будет работать. Однако, если вы знаете, что попытаетесь создать его на новой установке OSX, он потерпит неудачу. Это потому что:

 $ otool -D ./libpython3.4.1_OSX.dylib ./libpython3.4.1_OSX.dylib: /usr/local/Frameworks/Python.framework/Versions/3.4/Python 

Дилиб все еще держится за свое старое местоположение. Для меня действительно странно, что .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 runpath search paths и установить runpath search paths к @executable_path/../Frameworks/libpython3.4.1_OSX.dylib

Наконец, мне нужно перейти в edit scheme -> run -> arguments -> environment variables и добавить PYTHONHOME со значением ../Frameworks

Я подозреваю, что для выполнения этой работы мне также потребуется добавить PYTHONPATH

Ссылки:
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
Не могли бы вы помочь мне понять, как работают библиотеки Mach-O в Mac Os X?
http://nshipster.com/launch-arguments-and-environment-variables/

  • Стандартная библиотека Python - есть ли модуль для сбалансированного двоичного дерева?
  • One Solution collect form web for “Вставить Python3 без стандартной библиотеки”

    Я попытался это сделать, и потребуется больше времени, чем вы хотите потратить на внедрение Python 3 без библиотеки Python.

    Некоторые модули в библиотеке необходимы для запуска Python 3, и для этого потребуется много изменений для работы без них.

    Python - лучший язык программирования в мире.