Я создал глобальную переменную среды, добавив файл plist LaunchDaemon, как описано в этой статье . Хотя у меня есть некоторые проблемы.
Если я позвоню:
env
QTBIN нет в списке. echo $QTBIN
ничего не возвращается. /bin/launchctl getenv QTBIN
Путь возвращается.
Я использую это в скрипте Python 3, который используется как в Windows, так и в macOS и следовательно, доступ к QTBIN осуществляется с помощью команды os.getenv("QTBIN")
. Однако эта команда возвращает Нет при выполнении в macOS. Это заставляет меня предположить, что он основан на параметре команды 1 или 2. Выше.
Вопрос Как создать переменную среды, доступную для всех программ и доступную в Python для обоих * 1046? * а macOS? Если возможно, я бы хотел, чтобы в скрипте python не указывался код os c. Я думаю, что предпочтительным решением будет включение QTBIN в список env.
Мой файл plist: /Library/LaunchDaemons/setenv.QTBIN.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>setenv.QTBIN</string>
<key>ProgramArguments</key>
<array>
<string>/bin/launchctl</string>
<string>setenv</string>
<string>QTBIN</string>
<string>/usr/local/Cellar/qt/5.14.1/bin</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
Команда для загрузки переменной среды без перезапуска:
launchctl load -w /Library/LaunchDaemons/setenv.QTBIN.plist
.