我正在尝试创建一个cron作业来运行我编写的python脚本,但由于某种原因,脚本只在我从命令行运行它时运行。它以前工作过,但我不小心删除了我的crontab。当我刚写的crontab试图运行它时,我得到一个关于MySQLdb模块是错误架构的错误:
Traceback (most recent call last):
File "/Users/myuser/Documents/EE_SFDC Integration/csv_reader/Weekly_Updates/Weekly_Confirmation/weekly_confirm.py", line 7, in <module>
import MySQLdb
File "/Library/Python/2.7/site-packages/MySQLdb/__init__.py", line 19, in <module>
import _mysql
ImportError: dlopen(/Library/Python/2.7/site-packages/_mysql.so, 2): no suitable image found. Did find:
/Library/Python/2.7/site-packages/_mysql.so: mach-o, but wrong architecture
在我的crontab中,我尝试使用几个python版本(2.7和3.4)的完整路径,但我仍然遇到了问题。当我使用3.4时,我没有收到有关MySQLdb的错误,但我做在print .forma()语句中出错是出错的语法。
但是,当我从命令行运行脚本时,这种情况不会发生,因此我预计这也不是正确的版本。
cron工作看起来像这样:
14 12 * * * today=`date +"\%Y-\%m-\%d"` && /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2 /Users/myuser/Documents/EE_SFDC\ Integration/csv_reader/Weekly_Updates/Weekly_Confirmation/weekly_confirm.py > /Users/myuser/Documents/EE/run_logs/weekly_sync_runlog_$today.txt 2>&1
非常感谢任何帮助!
答案 0 :(得分:0)
错误消息通常意味着您在MySQLdb(或依赖项)和Python体系结构之间存在不匹配。
也就是说,其中一个最有可能是64位,而另一个是32位。
如果您在终端中尝试以下操作会怎样?
$ /System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2
(Take note of the exact version)
>>> import platform
>>> print platform.architecture()
>>> import MySQLdb
再次这样做,但是这次是从您的路径中使用python并查看它们是否不同
$ python
>>> import platform
>>> print platform.architecture()
>>> import MySQLdb
编辑:
您还可以查看文件,构建模块的架构。
$ file /Library/Python/2.7/site-packages/_mysql.so
/Library/Python/2.7/site-packages/_mysql.so: Mach-O universal binary with 2 architectures
/Library/Python/2.7/site-packages/_mysql.so (for architecture x86_64): Mach-O 64-bit bundle x86_64
/Library/Python/2.7/site-packages/_mysql.so (for architecture i386): Mach-O bundle i386