Глобальные переменные среды в macOS Catalina - PullRequest
1 голос
/ 25 февраля 2020

Я создал глобальную переменную среды, добавив файл plist LaunchDaemon, как описано в этой статье . Хотя у меня есть некоторые проблемы.

Если я позвоню:

  1. env QTBIN нет в списке.
  2. echo $QTBIN ничего не возвращается.
  3. /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.

...