1

想要通过launchctl脚本触发的python程序(apple.py),python2.7下写在anaconda

用于触发python程序的launchctl plist脚本(com.tushare.refreshall.plist)

我尝试使用plist脚本启动我的python程序但徒劳无功,在程序中,我导入了一个包tushare,但是在日志文件“stderr”中返回“ImportError:No module named tushare”,这个包可以成功导入用anaconda编写的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

猜猜可能是由于 plist 脚本中缺少“EnvironmentVariables”参数,但我不知道如何修改 plist 脚本来解决问题。每次,我都会执行以下脚本。用 Plist 脚本检查语法,它可以被执行。

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

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

"launchctl start com.tushare.refreshall.plist"
4

1 回答 1

0

您使用 launchctl 启动的服务可能不会共享您在登录终端时所处的环境,包括 anaconda 配置。

您可以通过调整 plist 的ProgramArguments密钥来解决此问题,并首先通过 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,安装了 anaconda /Users/username/anaconda3。根据您的具体情况进行调整,包括 conda 环境名称。

于 2019-12-04T19:18:24.093 回答