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?
Это может быть ваша проблема, что вы имеете в виду с этим утверждением? как правило, ответ будет "Нет, нельзя"