Мне недавно понадобилась статическая версия python в одном из моих проектов, поэтому я получил источник и построил его. После связывания его с моим приложением, когда я его запускаю, мне не хватает всех необходимых модулей, и я не знаю, куда их поместить.Static python build missing modules
Ошибки:
Could not find platform independent libraries <prefix>
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
'import site' failed; use -v for traceback
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named time
Код:
#include <Python.h>
int main(int argc, char *argv[])
{
Py_SetProgramName(argv[0]); /* optional but recommended */
Py_Initialize();
PyRun_SimpleString("from time import time,ctime\n"
"print 'Today is',ctime(time())\n");
Py_Finalize();
return 0;
}
Код для здания ехе:
gcc main.c -I/Desktop/Python-2.6.4 -I//Desktop/Python-2.6.4/Include -I/Desktop/Python-2.6.4/Modules -L/Desktop/Python-2.6.4 -lpython2.6 -static
Tutorial for building python statically
Если кто-то может сказать мне, где поставить эти модули или даже лучше сказать мне, как связать их статически, это было бы очень признательно!
Я не уверен относительно портативного python install, потому что он огромен. Сама установка составляет примерно 250 Мб, мне нужны только модули, которые составляют примерно 20 МБ. Я подумаю, но я не думаю, что смогу реализовать это в таком маленьком приложении. Спасибо за Ваш ответ! – gregyjames
Что именно вы хотите достичь в итоге? Вы на Windows, верно? Может быть, создание исполняемого файла с py2exe или другим решением (http://docs.python-guide.org/en/latest/shipping/freezing/) может работать? Вы должны иметь возможность включать только те модули, которые необходимы вашему приложению. – jeverling
Я только что установил PortablePython в Wine, после отмены выбора всех модулей размером до 50 МБ. Я думаю, что если вы удалите все, что не нужно (вы можете использовать https://docs.python.org/3.4/library/modulefinder.html, чтобы узнать, какие модули вы должны включить), вы должны иметь возможность уменьшить размер гораздо дальше. Если вы просто хотите отправить проект python, я бы проверял замороженные решения. – jeverling