Python模块不能在macOS上使用launchctl脚本启动时导入。

2024-04-29 03:14:25 发布

您现在位置:Python中文网/ 问答频道 /正文

The python program(apple.py) which wanted to be triggered by launchctl script,written under python2.7 in anaconda

The launchctl plist script(com.tushare.refreshall.plist) which was used to trigger the python program

我试图使用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"

Tags: thetopy程序脚本comapplewhich
1条回答
网友
1楼 · 发布于 2024-04-29 03:14:25

当您登录终端(包括anaconda配置)时,启动launchctl的服务可能不共享您所处的环境。你知道吗

您可以通过调整plist的ProgramArguments键来解决这个问题,并首先通过bash运行您想要的任何东西,并在想要的程序之前包含conda激活。下面是在名为py36的conda环境中运行emacs守护程序的示例:

  <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环境名称。你知道吗

相关问题 更多 >