Python3 ubuntu 中 crontab 中的脚本
Python3 script in crontab in ubuntu
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 并以一种自然的方式使用设置工具(就像我在上面对 python2 所做的那样)
如果我没理解错的话,您想 运行 您的脚本与 virtualenv
中的 python3
。
如果是这样,您应该在 crontab -e
中使用此路径:/home/eric/project/env/bin/python
(找出确切的路径,如果这个路径不起作用)。
我认为,shebang 在这里没有任何关系,一旦你明确指定 python 二进制。
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 并以一种自然的方式使用设置工具(就像我在上面对 python2 所做的那样)
如果我没理解错的话,您想 运行 您的脚本与 virtualenv
中的 python3
。
如果是这样,您应该在 crontab -e
中使用此路径:/home/eric/project/env/bin/python
(找出确切的路径,如果这个路径不起作用)。
我认为,shebang 在这里没有任何关系,一旦你明确指定 python 二进制。