MySQLdb模块在从命令行运行Python脚本时工作,但不是作为cron作业

MySQLdb模块在从命令行运行Python脚本时工作,但不是作为cron作业,python,cron,mysql-python,Python,Cron,Mysql Python,我试图创建一个cron作业来运行我编写的python脚本,但由于某些原因,该脚本只在我从命令行运行时运行。它以前工作过,但我不小心删除了我的crontab。当我刚刚编写的crontab试图运行它时,我得到一个错误,即MySQLdb模块是错误的体系结构: Traceback (most recent call last): File "/Users/myuser/Documents/EE_SFDC Integration/csv_reader/Weekly_Updates/Weekly

我试图创建一个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

非常感谢您的帮助

错误消息通常意味着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

错误消息通常表示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

非常感谢。当我尝试以您建议的第一种方式导入MySQLdb时,我看到了一个错误
/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2
,而不是从我的路径运行Python。考虑到这一点,我如何在cronjob中找出Python的哪个版本(以及要使用的文件路径)?另外,通过
/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2
运行Python,然后运行
print platform.architecture()
返回
('64位','')
,当我尝试导入MySQLdb时抛出了一个错误,而当我从PATH运行时,返回了
('32bit','')
,它在导入时没有抛出错误,因此我需要运行32位版本的Python。我想我找到了答案。。。
arch-i386/usr/bin/python
听起来正确吗?谢谢!当我尝试以您建议的第一种方式导入MySQLdb时,我看到了一个错误
/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2
,而不是从我的路径运行Python。考虑到这一点,我如何在cronjob中找出Python的哪个版本(以及要使用的文件路径)?另外,通过
/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2
运行Python,然后运行
print platform.architecture()
返回
('64位','')
,当我尝试导入MySQLdb时抛出了一个错误,而当我从PATH运行时,返回了
('32bit','')
,它在导入时没有抛出错误,因此我需要运行32位版本的Python。我想我找到了答案。。。
arch-i386/usr/bin/python
听起来正确吗?