Модуль Python не может быть импортирован при запуске скриптом launchctl в macos

Программа python (apple.py), которая должна запускаться скриптом launchctl, написанным под python2.7 в anaconda

Сценарий launchctl plist(com.tushare.refreshall.plist), который использовался для запуска программы python

Я пытаюсь использовать скрипт plist для запуска моей программы на python, но напрасно, в программе я импортирую пакет tushare, но "ImportError: ни один модуль с именем tushare" не возвращается в файл журнала "stderr", этот пакет может быть успешно импортирован в Программа на Python написана на анаконде.

Результаты:

Traceback (most recent call last):

  File "/Users/jacksonshawn/PythonCodes/apple.py", line 8, in <module>
import tushare as ts

ImportError: No module named tushare

Думаю, возможно, это связано с отсутствием параметра "EnvironmentVariables" в сценарии plist, но я не знаю, как изменить сценарий plist для решения проблемы. Каждый раз я выполняю следующее для выполнения сценария. Синтаксис проверяется сценарием Plist, это может быть выполнено.

"launchctl unload -w com.tushare.refreshall.plist"

"launchctl load -w com.tushare.refreshall.plist"

"launchctl start com.tushare.refreshall.plist"

0 ответов

Служба, которую вы запускаете с помощью launchctl, скорее всего, не использует среду, в которой вы находитесь, когда вы входите в терминал, включая конфигурацию anaconda.

Вы можете исправить это, настроив plist ProgramArgumentskey и сначала запустите все, что хотите, через bash и включите активацию conda перед предполагаемой программой. Вот пример, в котором демон emacs запускается в среде conda с именемpy36:

  <key>ProgramArguments</key>
  <array>
    <string>bash</string>
    <string>-c</string>
    <string>source /Users/username/anaconda3/etc/profile.d/conda.sh; conda activate py36; /usr/local/opt/emacs/bin/emacs --fg-daemon</string>
  </array>

Это предполагает, что вы username, с установленной анакондой в /Users/username/anaconda3. Отрегулируйте в соответствии с вашими особенностями, включая имя среды conda.

Другие вопросы по тегам