【发布时间】:2018-01-20 13:40:52
【问题描述】:
我有一个 godaddy 共享主机帐户,我的目标是使用它来让 python 脚本作为 cron 作业运行。我在本地主机上完成了所有工作,但是当上传到 godaddy 服务器时,我立即发现我的脚本导入的模块在服务器上不可用,并且安装它们会很棘手。幸运的是,我找到了这个很棒的教程:https://www.youtube.com/watch?v=pf2HS9gGI7k,然后我可以通过在 SSH 中使用以下命令更改 python 路径来成功安装模块:
cd ~
PYTHONPATH=$PYTHONPATH:/lib/python/
PYTHONPATH=$PYTHONPATH:$HOME/lib/python/
然后我通过 SSH 命令安装了模块:
cd ~
wget http://urladdressofthisparticularmodule.tar.gz
tar xvf thisparticularmodule.tar.gz
cd thisparticularmodulesfolderthatthelaststepmade/
python setup.py install --home=~
然后我通过 SSH 命令成功运行了我的 pythonscript:
cd ~
python /home/thisismygodaddyusername/public_html/thisismyscript.py
它识别出模块并运行脚本。 但是当我尝试将它作为 cronjob 运行时,我将 cronjob 命令设置为:
PYTHONPATH=$PYTHONPATH:$HOME/lib/python python /home/thisismygodaddyusername/public_html/thisismyscript.py
但脚本不起作用,并且 python 模块存在一些问题。所以我想我在这个 cronjob 命令中做的不对,可能与 python 路径有关。如果有人对如何更改此命令或我应该做什么有任何建议,我会非常放心。
然后我得到的很长的错误是:
File "/home/thisismygodaddyusername/public_html/thisismyscript.py", line 3, in <module>
import MySQLdb
File "/home/thisismygodaddyusername/lib/python/MySQL_python-1.2.3-py2.7-linux-x86_64.egg/MySQLdb/__init__.py", line 19, in <module>
File "/home/thisismygodaddyusername/lib/python/MySQL_python-1.2.3-py2.7-linux-x86_64.egg/_mysql.py", line 7, in <module>
File "/home/thisismygodaddyusername/lib/python/MySQL_python-1.2.3-py2.7-linux-x86_64.egg/_mysql.py", line 3, in __bootstrap__
File "/home/thisismygodaddyusername/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3147, in <module>
@_call_aside
File "/home/thisismygodaddyusername/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3131, in _call_aside
f(*args, **kwargs)
File "/home/thisismygodaddyusername/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3160, in _initialize_master_working_set
working_set = WorkingSet._build_master()
File "/home/thisismygodaddyusername/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 657, in _build_master
ws = cls()
File "/home/thisismygodaddyusername/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 650, in __init__
self.add_entry(entry)
File "/home/thisismygodaddyusername/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 706, in add_entry
for dist in find_distributions(entry, True):
File "/home/thisismygodaddyusername/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1966, in find_eggs_in_zip
if metadata.has_metadata('PKG-INFO'):
File "/home/thisismygodaddyusername/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1488, in has_metadata
return self.egg_info and self._has(self._fn(self.egg_info, name))
File "/home/thisismygodaddyusername/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1840, in _has
return zip_path in self.zipinfo or zip_path in self._index()
File "/home/thisismygodaddyusername/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1717, in zipinfo
return self._zip_manifests.load(self.loader.archive)
File "/home/thisismygodaddyusername/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1677, in load
manifest = self.build(path)
File "/home/thisismygodaddyusername/.local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1650, in build
with zipfile.ZipFile(path) as zfile:
AttributeError: ZipFile instance has no attribute '__exit__'
我不知道这是否会影响事情,但是如果我在 SSH 中执行命令:
cd ~
cd lib
ls
我明白了:
./ ../ __init__.py python/ python2.6/ python2.7/
我所有的模块似乎都安装在上面的“python/”文件夹中 在我疯狂地尝试弄清楚如何执行这个 python 脚本 cronjob 项目时,我之前可能已经安装了这些 python2.6/python2.7/ 文件夹,我认为其中包含 python2.6 和 python2.7
作为一个附带问题,作为一个对 Linux 和 ssh 命令知识有限的新手程序员,想要实现通过 cron 作业在 Web 主机上运行 python 脚本的想法,以前从未这样做过,会是什么解决这个问题的正确方法,与我刚刚开始并尝试在我通过谷歌搜索进行时弄清楚的做法相反?我想我在问什么是最有效的方法来学习我需要知道的关于共享主机上的 cronjobs 以及必须以这种有趣的方式安装模块的问题。如果 godaddy 能提供一个简短的概述,那就太好了。
【问题讨论】:
标签: python module cron shared-hosting pythonpath