Python в приложениях Магазина Windows

приложение магазина Windows Python 3 Для Метро утверждает, что он позволяет пользователям редактировать и запускать файлы Python (я не могу заставить его работать). Как это возможно из песочницы? Могу ли я запустить файл (скажем test.py на рабочем столе) из моего приложения на JavaScript?

3 ответов


Как это возможно из песочницы?

я портировал интерпретатор Python в WinRT для достижения этого. Вместо использования Win32 API теперь используется WinRT API (в частности, для чтения файлов из папки документов пользователя).

могу ли я запустить файл (скажем test.py на рабочем столе) из моего приложения JavaScript?

в принципе, да. Вам нужно взять python33.dll из моего приложения, оберните его как компонент WinRT и тогда звони. На самом деле это компонент WinRT, но он не предоставляет API Python. См.

http://hg.python.org/sandbox/loewis/file/ee9f8c546ddd/win8app/python33


в основном, что вам нужно сделать, это написать приложение C++ "shell" в соответствии с правилами Metro, а затем разместить интерпретатор Python внутри этого приложения c++. И снова очистите кодовую базу Python, чтобы она работала в песочнице Metro.

затем вы можете сделать еще один шаг и предоставить оболочке C++ библиотеки WinRT для среды Python. Вероятно, есть способ заставить Python выставлять объекты WinRT, но это будет много работы.

вы не сможете позвонить непосредственно из JavaScript в Python-вам понадобится компонент WinRT посередине.

Это много работы и требует довольно низкого уровня работы в C.


У вас есть два варианта:

  • добавить python.exe к вашему пути и, изнутри терминала, введите папку, содержащую ваш test.py и запустить python.exe test.py, используя текущую установку

  • вы можете следовать шагу 1 и шагу 2 из этот пост и установить новый python с нуля

Если вы можете предоставить немного больше информации, мы можем помочь вам лучше.

Can Я запускаю файл (скажем test.py на рабочем столе) из моего приложения JavaScript?

Это может быть ваша проблема, что вы имеете в виду с этим утверждением? как правило, ответ будет "Нет, нельзя"