2014-10-26 117 views
1

我一直在努力研究如何正确安装python模块,以便可以通过crontab访问它。下面我概述了我目前正在采取的步骤,并希望有人告诉我我犯了什么错误,以及如何改进。Python模块,Pip,Cronjobs

一切看起来都很好,直到我到第8步

所有反馈肯定是欢迎

第1步 - 检查口技

>>> import beatbox 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named beatbox 

第2步 - 安装节奏口技

MacBook-Pro-10:~ $ sudo pip install beatboxxx 
Downloading/unpacking beatboxxx 
    Downloading beatboxxx-21.5.tar.gz 
    Running setup.py (path:/private/tmp/pip_build_root/beatboxxx/setup.py) egg_info for package beatboxxx 

    warning: no files found matching '*.txt' under directory 'examples' 
    no previously-included directories found matching 'src/beatbox/tests/sfconfig.py' 
Installing collected packages: beatboxxx 
    Running setup.py install for beatboxxx 

    warning: no files found matching '*.txt' under directory 'examples' 
    no previously-included directories found matching 'src/beatbox/tests/sfconfig.py' 
Successfully installed beatboxxx 
Cleaning up... 

第3步 - 验证beatbox位置

>>> import beatbox 
>>> print beatbox.__file__ 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/beatbox/__init__.pyc 

第4步 - 检查目录在sys.path中

>>> import sys 
>>> for i in sys.path: 
...  print i 
... 

/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload 
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages 
/Library/Python/2.7/site-packages 

第5步 - 添加到节奏口技的sys.path

>>> import sys 
>>> sys.path.append('/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/beatbox') 
>>> x = '/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/beatbox' 
>>> x in sys.path 
True 
>>> 

第6步 - 创建Python文件导入口技 的MacBook -Pro-10:Desktop $ vim beatbox_test.py

import beatbox 
~ 
~  

第7步 - 创建的crontab 的MacBook-PRO-10:桌面$ crontab -e命令

*/1 * * * * python /Users/user123121231/Desktop/beatbox_test.py  

crontab: installing new crontab 

8步 - 检查邮件的crontab成功

MacBook-Pro-10:Desktop $ mail 
"/var/mail/Message 1: 1 message 1 new 

>N 1 MacBook-P Sun Oct 26 11:11 22/889 "Cron <MacBook-Pro-10> python /Users/user123121231/Desktop/beatbox_test.py" 


From [email protected] Sun Oct 26 11:11:01 2014 
X-Original-To: User123142324 
Delivered-To: [email protected] 
From: [email protected] (Cron Daemon) 
To: [email protected] 
Subject: Cron <[email protected]> python /Users/User123142324/Desktop/beatbox_test.py 
X-Cron-Env: <SHELL=/bin/sh> 
X-Cron-Env: <PATH=/usr/bin:/bin> 
X-Cron-Env: <LOGNAME=User123142324> 
X-Cron-Env: <USER=User123142324> 
X-Cron-Env: <HOME=/Users/User123142324> 
Date: Sun, 26 Oct 2014 11:10:00 -0700 (PDT) 

Traceback (most recent call last): 
    File "/Users/User123142324/Desktop/beatbox_test.py", line 1, in <module> 
    import beatbox 
ImportError: No module named beatbox": 

更新:仍然没有解决办法,但我发现有些东西。我修改了beatbox_test.py是以下情况:

import sys 
for i in sys.path: 
    print i 
import beatbox 

哪些返回以下:

/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python26.zip 
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6 
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-darwin 
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac 
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/plat-mac/lib-scriptpackages 
/System/Library/Frameworks/Python.framework/Versions/2.6/Extras/lib/python 
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-tk 
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-old 
/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/lib-dynload 
/Library/Python/2.6/site-packages 

为什么一切都指向2.6,而不是2.7?

+0

你已经把你的问题非常漂亮。我不知道它是如何得到如此低的意见。你在'步骤6'中做了什么,在你的'beatbox_test.py'脚本中做了。并再次检查。 – 2014-10-26 18:42:51

+0

beatbox_test.py中的唯一行是'import beatbox' – kmomo 2014-10-26 18:49:19

+0

也许cron使用的是不同于您安装beatbox的Python版本。我建议通过'which python'找出工作python的路径,然后在crontab中设置一个绝对路径。例如:/ usr/bin/python – 2014-10-26 20:40:39

回答

1

使用此行的crontab指向(安装了它,并将所有软件包)特定的Python版本:

*/1 * * * * /usr/bin/python2.7 /Users/user123121231/Desktop/beatbox_test.py 
+0

是否有任何方法可以永久更改它,所以我可以使用'python'而不是'/ usr/bin/python2.7' – kmomo 2014-10-26 20:47:37

+0

因为python2.6也有'easy_install',所以你可以安装你的包版本:'sudo /usr/bin/easy_install-2.6 beatboxxx' – 2014-10-26 20:53:09

0

您可能需要指定到相应的Python版本的完整路径,在crontab,否则错误版本可能会运行,并会在错误的地方查找您安装的模块。假设你的程序在命令行启动时运行良好,你可以使用which命令来查找你正在使用的python可执行文件的位置。

$ which python 
/usr/bin/python2.7 

然后使用此路径在crontab条目指向特定Python版本(并安装了所有的软件包):

*/1 * * * * /usr/bin/python2.7 /Users/user123121231/Desktop/beatbox_test.py