ubuntu中crontab中的Python3脚本

时间:2015-02-28 17:35:03

标签: python ubuntu python-3.x cron ubuntu-14.04

eric@eric:~/project$ tree -d
.
|-- env
|   |-- bin
|   |-- include
|   |   `-- python3.4m -> /usr/include/python3.4m
|   `-- lib
|       `-- python3.4
|           |-- collections -> /usr/lib/python3.4/collections
|           |-- config-3.4dm-x86_64-linux-gnu -> /usr/lib/python3.4/config-3.4dm-x86_64-linux-gnu
|           |-- config-3.4m-x86_64-linux-gnu -> /usr/lib/python3.4/config-3.4m-x86_64-linux-gnu
|           |-- distutils
|           |   `-- __pycache__
|           |-- encodings -> /usr/lib/python3.4/encodings
|           |-- importlib -> /usr/lib/python3.4/importlib
|           |-- lib-dynload -> /usr/lib/python3.4/lib-dynload
|           |-- plat-x86_64-linux-gnu -> /usr/lib/python3.4/plat-x86_64-linux-gnu
|           |-- __pycache__
|           `-- site-packages
|               ...  # removed thirdparty libraries just to make it more readable
|               |-- pip-1.5.6.dist-info
|               |-- __pycache__
|               |-- setuptools
|               |   |-- command
|               |   |   `-- __pycache__
|               |   |-- __pycache__
|               |   `-- tests
|               |       `-- __pycache__
|               `-- setuptools-3.6.dist-info
`-- myscript.py

所以在主目录中有一个名为project的文件夹。在项目文件夹中我有一个virtualenv文件夹和一个简单的脚本(让我们在python3中说你好世界)

which python3提供/usr/bin/python3

现在我尝试使用crontab -e(ubuntu 14.04)运行此脚本。 我可以通过激活virtualenv(source env/bin/activate)来手动运行此脚本,但我不知道我应该如何在crontab中执行此操作以及这个python3 virtualenv的shebang。

PS:我能够在crontab中运行python2脚本,方法是在文件顶部添加shebang #!/usr/bin/python,然后在crontab -e中添加此行(每天下午2点运行)

00 14 * * * /usr/bin/python /home/eric/project/myscript.py >> /var/log/cronjob.log

PPS:我不想编写setup.py并以自然的方式使用setuptools(正如我上面针对python2所做的那样)

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您希望使用来自python3的{​​{1}}来运行您的脚本。

如果是这样,您应该在virtualenvcrontab -e中使用此路径(找出确切的路径,如果这个路径不起作用)。

我认为,一旦你明确指定python二进制文件,shebang就没有任何关系。