【发布时间】:2016-02-27 14:36:29
【问题描述】:
我正在一个脚本中运行以下 python 导入,该脚本可以从终端的命令行和 ipython 笔记本正常运行。
#!/usr/bin/python
import os
import re
import urllib
import urllib2 as ul
import sys
from bs4 import BeautifulSoup as bs
当它通过 Mac 启动从 .plist 文件调用时,我收到以下错误:
11/24/15 1:17:05 PM com.jerry.sat_images[668] Traceback (most recent call last):
11/24/15 1:17:05 PM com.jerry.sat_images[668] File "/Users/jerrykallam/python_practice/sat_image.py", line 6, in <module>
11/24/15 1:17:05 PM com.jerry.sat_images[668] import bs4
11/24/15 1:17:05 PM com.jerry.sat_images[668] ImportError: No module named bs4
11/24/15 1:17:05 PM com.apple.launchd.peruser.501[165] (com.jerry.sat_images[668]) Exited with exit code: 1
从命令行和 ipython bs4 导入,脚本工作正常。这是似乎可以正常工作的 .plist 代码。不知道为什么脚本只有在被 launchd 调用时才能导入 bs4。
<?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>com.jerry.satimages</string>
<key>ProgramArguments</key>
<array>
<string>python</string>
<string>/Users/jerrykallam/python_practice/sat_image.py</string>
</array>
<key>StartInterval</key>
<integer>360</integer>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
【问题讨论】:
-
你能运行
sudo pip freeze | grep beautifulsoup4看看是否为超级用户安装了包吗? -
我得到以下信息:目录 '/Users/jerrykallam/Library/Caches/pip/http' 或其父目录不属于当前用户,并且缓存已被禁用。请检查该目录的权限和所有者。如果使用 sudo 执行 pip,您可能需要 sudo 的 -H 标志。 beautifulsoup4==4.3.2
-
那个目录的权限和所有者是什么?
-
当我运行 sudo -H pip freeze | grep beautifulsoup4,我得到:beautifulsoup4==4.3.2
-
权限为:drwx------ 4 jerrykallam 员工 136 Oct 26 14:53 http
标签: python launchd bs4 launchdagent