2014-10-26 2 views
1

Я изо всех сил пытаюсь понять, как правильно установить модуль python, чтобы к нему можно было получить доступ crontab. Ниже я изложил шаги, которые я сейчас предпринимаю, и хотел бы, чтобы кто-то сказал мне, где я делаю ошибку, и как я мог бы улучшить.Python Modules, Pip, Cronjobs

Все выглядит хорошо, пока я не к шагу 8

Все обратной связи, безусловно, приветствуем

Шаг 1 - Проверьте битбокс

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

Шаг 2 - Установка Beatbox

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 - Проверить место битбокса

>>> 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 - Добавить Beatbox в 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 - Создание файла импорта питона Beatbox MacBook -Pro-10: Рабочий стол $ vim beatbox_test.py

import beatbox 
~ 
~  

Шаг 7 - Создание кронтаб MacBook-Pro-10: Desktop $ кронтаб -e

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

crontab: installing new crontab 

Шаг 8 - Проверьте почту для кронтаб успеха

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": 

UPDATE: до сих пор нет решения, но я нашел что-то из. Я внес изменения в 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'. и проверьте его снова. –

+0

единственная строка в beatbox_test.py - это 'import beatbox' – kmomo

+0

Может быть, cron использует другую версию Python, чем вы установили bitbox для. Я рекомендую узнать путь рабочего python через 'which python', а затем установить абсолютный путь в crontab. Например:/usr/bin/python –

ответ

1

Используйте эту линию в кронтаб, чтобы указать на конкретную версию Python (и все пакеты установленных для него):

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

Есть ли способ изменить его навсегда, поэтому я могу просто использовать 'python' вместо'/usr/bin/python2.7' – kmomo

+0

Так как существует также 'easy_install' для python2.6, вы можете установить свой пакет для этого также: 'sudo /usr/bin/easy_install-2.6 beatboxxx' –

0

Вы, возможно, потребуется указать полный путь к соответствующей версии питона в кронтаб, в противном случае неправильная версия может работать и будет искать установленные модули не в том месте. Предполагая, что ваша программа работает нормально, когда вы запускаете ее из командной строки, вы можете использовать команду, чтобы найти местоположение исполняемого файла python, который вы используете.

$ which python 
/usr/bin/python2.7 

Затем использовать этот путь в вашем кронтабе записи, чтобы указать на эту конкретную версию Python (и все пакеты, установленные для него):

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