На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: RaD
  
    > Embedded Python
      скачал исходники питона, собрал статическую библиотеку.
      ExpandedWrap disabled
        ./configure -disable-shared

      затем слинковал со своей программой статически.
      в моей OS(linux ubuntu 10.10) всё нормально работает, затем запускаю в Mandriva Spring, на stdout получаю следующее:
      Цитата
      Could not find platform independent libraries <prefix>
      Could not find platform dependent libraries <exec_prefix>
      Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
      ImportError: No module named site

      собранная статически библиотека пытается обратиться к интерпретатору(он установлен)? если да то как можно собрать Python так что бы он мог работать в OS где не установлен Python.
      Сообщение отредактировано: DEADHUNT -
        Не уверен, но как на счет совместимости версий интепретатора в твоей и испытуемой ОС?
        Цитата DEADHUNT @
        если да то как можно собрать Python так что бы он мог работать в OS где не установлен Python.
        :wall: может хочется иметь нечто подобное http://www.py2exe.org/ но только для линукса?
          Может я чего не понимаю, но вижу, две что интерпретатор не нашел две библиотеки. Одна из них специфична для платформы.
          Думаю, поэтому и не работает.
            Цитата NetVir @
            может хочется иметь нечто подобное http://www.py2exe.org/ но только для линукса?

            есть программа на C++ в неё встроен интерпретатор питона(embedded python), что никто не использовал?
            вывод этих сообщений происходит при вызове Py_Initialize(), вроде надо настроить переменную PYTHONPATH настроить чтобы она указывала на модули, но ведь можно как-то собрать питон чтобы он включал в себя все необходимые модули(Python Freeze).

            Добавлено
            кажется нашёл решение(http://trac2.assembla.com/pkaudio/browser/pkscriptapp/src/engine/scripting/ScriptingApplication.cpp?rev=26), надо в начале заморозить все требуемые модули а потом подгрузить их перед вызовом Py_Initialize()
            Сообщение отредактировано: DEADHUNT -
              теперь сделал заморозку всех модулей, слинковал их с программой.
              PyImport_FrozenModules = frozen_modules;
              Py_Initialize();
              получаю следующее:
              Цитата
              Could not find platform independent libraries <prefix>
              Could not find platform dependent libraries <exec_prefix>
              Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
              Traceback (most recent call last):
              File "site.py", line 553, in <module>
              File "site.py", line 535, in main
              File "site.py", line 268, in addusersitepackages
              File "site.py", line 243, in getusersitepackages
              File "site.py", line 233, in getuserbase
              File "sysconfig.py", line 535, in get_config_var
              File "sysconfig.py", line 434, in get_config_vars
              File "sysconfig.py", line 287, in _init_posix
              IOError: invalid Python installation: unable to open /usr/local/lib/python2.7/config/Makefile (No such file or directory)

              как можно это исправить?
              кто-нибудь встраивал питон в свои приложения?
              Сообщение отредактировано: DEADHUNT -
                нашёл решение:
                ExpandedWrap disabled
                  Py_NoSiteFlag = 1;
                  Py_FrozenFlag = 1;
                  Py_IgnoreEnvironmentFlag = 1;
                  Py_SetPythonHome("");
                  Py_SetProgramName("");
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0270 ]   [ 15 queries used ]   [ Generated: 2.05.24, 15:38 GMT ]