Модуль Python не может быть импортирован при запуске скриптом launchctl в macos
Я пытаюсь использовать скрипт 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 ProgramArguments
key и сначала запустите все, что хотите, через 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.