Я использую этот пример Native Messaging с Firefox Quantum 61.0.2 (64-разрядная версия). Я могу успешно установить расширение, скопировав файл манифеста json в правильное место. Я также могу получать сообщения обратно, когда нажимаю на расширение внутри Firefox. Однако я изменил возвращаемую строку, чтобы напечатать версию Python, которая запускается, и я получаю следующее:
Sending: ping background.js:17:3
Received: 2.7.10 (default, Oct 6 2017, 22:29:07)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)]
В командной строке, если я запускаю то же самое, вот что я получаю:
Python 3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 12:04:33)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.version
'3.6.4 |Anaconda, Inc.| (default, Jan 16 2018, 12:04:33) \n[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)]'
Как заставить собственное расширение использовать те же переменные окружения, что и я? Почему он использует что-то другое? Мой .bash_profile является источником моего .bashrc, а мой .bashrc добавляет установку Python 3.6.4 к переменным PATH. Почему / Как Firefox не получает эту переменную среды и есть ли способ гарантировать, что он сделает это при установке на новый компьютер?
Редактировать:
Интересно, что если я запускаю приложение Firefox из терминала, то оно находит правильную версию Python. Выполнение следующего из командной строки:
$ /Applications/Firefox.app/Contents/MacOS/firefox
2018-09-09 21:32:19.400 plugin-container[2685:4443611] *** CFMessagePort: bootstrap_register(): failed 1100 (0x44c) 'Permission denied', port = 0x7137, name = 'com.apple.tsm.portname'
See /usr/include/servers/bootstrap_defs.h for the error codes.
2018-09-09 21:32:22.032 plugin-container[2686:4443755] *** CFMessagePort: bootstrap_register(): failed 1100 (0x44c) 'Permission denied', port = 0x8547, name = 'com.apple.tsm.portname'
See /usr/include/servers/bootstrap_defs.h for the error codes.
2018-09-09 21:32:24.126 plugin-container[2718:4443933] *** CFMessagePort: bootstrap_register(): failed 1100 (0x44c) 'Permission denied', port = 0x783b, name = 'com.apple.tsm.portname'
See /usr/include/servers/bootstrap_defs.h for the error codes.
objc[2684]: Class FIFinderSyncExtensionHost is implemented in both /System/Library/PrivateFrameworks/FinderKit.framework/Versions/A/FinderKit (0x7fff8ecadc90) and /System/Library/PrivateFrameworks/FileProvider.framework/OverrideBundles/FinderSyncCollaborationFileProviderOverride.bundle/Contents/MacOS/FinderSyncCollaborationFileProviderOverride (0x12e8b2cd8). One of the two will be used. Which one is undefined.
2018-09-09 21:33:11.341 plugin-container[3009:4445239] *** CFMessagePort: bootstrap_register(): failed 1100 (0x44c) 'Permission denied', port = 0x6f2f, name = 'com.apple.tsm.portname'
See /usr/include/servers/bootstrap_defs.h for the error codes.
дает вывод, который похож на вывод установки Python по умолчанию из командной строки. Кажется, что двойной щелчок на Приложении не делает его источником .bashrc файла с соответствующими переменными среды.