2016-02-27 13 views
6

Próbuję osadzić plik zip Pythona w mojej aplikacji. Pobrałem plik zip z witryny Pythona (win32).Osadzanie pliku Python Zip powoduje błąd?

Jest to kod używam ustawić ścieżkę Python

#include <Python.h> 
... 
std::wstring exe_dir = L"\\exe\\path"; 
std::wstring python_path; 
python_path += exe_dir + L"python-3.5.1-embed-win32.zip"; 
Py_SetPath(python_path.c_str()); 

Py_Initialize(); // Error : "Py_Initialize: unable to load the file system codec" 

... 

Ale bez względu na to, co robię, aplikacja rzucać tego samego błędu przez cały czas. Nawet jeśli gram z różnymi ścieżkami.

Jak mogę umieścić plik zip w mojej aplikacji?

Odpowiedz

0

Istnieje inny plik zip wewnątrz "python-3.5.1-embed-win32.zip".

python35.zip 

I to jest jeden plik, który należy dodać.

#include <Python.h> 
...  
std::wstring exe_dir = L"\\exe\\path"; 
std::wstring python_path; 
python_path += exe_dir + L"python35.zip"; 
Py_SetPath(python_path.c_str()); 

Py_Initialize();  
... 

byłbym zainteresowany, aby wiedzieć, co inne pliki są za (lub jeśli jest to poprawny sposób go używać) ...

+0

Stworzyłem [post na blogu] (http://www.myoddweb.com/2016/02/27/embed-python-in-your-c-application-without -python-installed-on-guest-machine /) z linkami do Pythona i krokami do naśladowania. – FFMG

0

Aby odpowiedzieć na ostatnie pytanie o „Co do innych plików są używane dla "we wbudowanej dystrybucji, pojawią się błędy w niektórych importach. Wystąpił błąd podczas importowania NumPy/SciPy, ponieważ brakuje jednego z tych plików poza Python35.zip - _ctypes.pyd. Zauważyłem również, że mały plik pyvenv.cfg musi siedzieć obok twojego EXE przynajmniej w Pythonie 3.5.2, który jest tylko plikiem tekstowym, który mówi: applocal = true. Oczywiście potrzebujesz python35.dll oczywiście ...