2010-11-02 85 views
5

我想从cron运行一个python脚本,但它没有正常运行,所以我假设它的不同路径env变量。无论如何改变python脚本中的变量?如何修改python脚本中的系统路径变量?

+1

您应该提供操作系统详细信息。此外,这看起来很像一个可能的重复 - 我建议更难搜索。 – 2010-11-02 19:26:08

+0

“不正常运行”是什么意思?你确定你甚至开始你的脚本(即它可以找到你的python二进制文件) – 2010-11-02 19:32:49

+0

我正在做很多Popen的程序,没有与他们的路径。 – 2010-11-02 19:34:06

回答

4

您不应该在python脚本中设置PATH。 相反,把类似

USER=joe 
HOME=/home/joe 
SHELL=/bin/bash 
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/some/other/path 
PYTHONPATH=/home/joe/pybin 
MAILTO=joe 
LANG=en_US.UTF-8 

#min hr day mon dow 
*/5 12 *  * *  reminder.py 'Eat lunch' 

在您的crontab顶部。这些环境变量将可用于通过crontab运行的所有cron作业。

+0

在下面的cron作业的顶部? – 2010-11-02 19:33:26

+0

@Joe:是的;位于顶部,下方有cron作业线。 – unutbu 2010-11-02 19:33:51

9

@ubuntu有正确的方法,但对于它的价值,@Joe蠢货,如果你需要的信息:

import sys 
print sys.path 
['.', '/usr/local/bin', '/usr/local/lib/python2.6/dist-packages',...] 
sys.path.append('/home/JoeBlow/python_scripts') 
print sys.path 
['.', '/usr/local/bin', '/usr/local/lib/python2.6/dist-packages', '/home/JoeBlow/python_scripts',...] 

sys.path是在你的初始化脚本的PYTHONPATH数组包含一切变量(或者你的shell的默认PYTHONPATH)。

8

虽然接受的答案适用于OP的目的,而第二个答案是正确的更新python sys.path变量,我认为,如果OP不能使用接受的答案(因为,有一个针对修改/测试机器上的OS PATH变量的策略),像this SO answer这样的东西就是他们正在寻找的东西。这里总结了简单的情况下,改变OS PATH环境变量:

app_path = os.path.join(root_path, 'other', 'dir', 'to', 'app') 
os.environ["PATH"] += os.pathsep + app_path 

至少,这是我希望能找到我读的问题。

+0

对于你想要设置PATH的情况(和PYTHONPATH是类似的代码),虽然请注意sys.path和os.environ ['PATH']是/可以是不同的。 – ntg 2017-11-20 11:22:01

相关问题