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所做的那样)
答案 0 :(得分:1)
如果我理解正确,您希望使用来自python3
的{{1}}来运行您的脚本。
如果是这样,您应该在virtualenv
:crontab -e
中使用此路径(找出确切的路径,如果这个路径不起作用)。
我认为,一旦你明确指定python二进制文件,shebang就没有任何关系。