簡體   English   中英

從 crontab 在 virtualenv 中運行 python 方法

[英]Run python method in virtualenv from crontab

我目前正在努力解決如何通過 crontab 在虛擬環境中從 python 文件運行方法。

我有一個如下所示的目錄: /home/ubuntu/project中有文件file.py和文件夾venv file.py中有一個method() ,我想通過 crontab 定期執行,使用 python 和虛擬環境的依賴項。

我已經發現我需要在虛擬環境中使用 python ,所以而不是

python3

我用

/home/ubuntu/project/venv/bin/python3

現在,我還找到了如何從命令行運行方法的問題的答案,即通過

python3 -c 'import foo; print foo.hello()' python3 -c 'import foo; print foo.hello()'

我試圖將兩者結合起來,但不幸的是

/home/ubuntu/project/venv/bin/python3 -c 'import /home/ubuntu/project/file; print(file.method())'

是無效的語法。

/home/ubuntu/project/venv/bin/python3 -c 'from /home/ubuntu/project/ import file; print(file.method())'

只會導致錯誤。 另一方面,

/home/ubuntu/project/venv/bin/python3 -c 'import file; print(file.method())'

導致找不到文件。

我該如何正確地做到這一點?

非常感謝您考慮這個問題。

import的參數不是文件名。 最簡單的解決方法可能是cd進入目錄,然后使用虛擬環境的 Python 解釋器運行腳本。

42 17 * * * cd project && ./venv/bin/python3 -c 'import file; file.method()'

來自主目錄為/home/ubuntu的用戶的crontab

更一般地說,您要從中導入的目錄需要在您的PYTHONPATH上,因此您可以等效地將其設置為目錄而不是cd 第三種選擇是將file.py中的代碼制作成可安裝的模塊,並將其安裝在虛擬環境中。 對於一次性的,這可能是不必要的苦差事,但它絕對是最強大和可持續的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM