运行 crons 时的 Virtualenvwrapper 环境变量
Virtualenvwrapper environment variables when running crons
我正在 运行 设置一个基本的 cron,它需要我使用 virtualenvwrapper
设置的环境变量。环境变量设置在/home/ubuntu/.virtualenvs/testcron/bin/activate
当我 运行 命令 cd /home/ubuntu/test_script && /home/ubuntu/.virtualenvs/testcron/bin/python3 my_script.py
时,脚本 运行 没有错误。该脚本导入一个环境变量并打印它。
但是,当我通过 cron (* * * * * cd /home/ubuntu/test_script && /home/ubuntu/.virtualenvs/testcron/bin/python3 my_script.py
) 运行 相同的脚本时,我得到了这个错误。
Traceback (most recent call last):
File "my_script.py", line 7, in <module>
main()
File "my_script.py", line 4, in main
print(os.environ['SOME_ENV_VARIABLE'])
File "/home/ubuntu/.virtualenvs/testcron/lib/python3.5/os.py", line 725, in __getitem__
raise KeyError(key) from None
KeyError: 'SOME_ENV_VARIABLE'
当我运行以下我似乎没有任何问题
~$ /home/ubuntu/.virtualenvs/testcron/bin/python3
>>> import os
>>> os.environ['SOME_ENV_VARIABLE']
'my_env_variable_value'
我是否遗漏了一些明显的东西,virtualenvwrapper 的配置是否存在问题,或者以这种方式 运行ning crons 有问题吗?
来自 virtualenv (/home/ubuntu/.virtualenvs/testcron/bin/python3
) 的 运行 python 允许访问 venv site-packages
但它不会激活 venv。如果你在 bin/activate
中有一些不寻常的东西,你必须在每次需要时都找到它:
* * * * * cd /home/ubuntu/test_script && . /home/ubuntu/.virtualenvs/testcron/bin/activate && /home/ubuntu/.virtualenvs/testcron/bin/python3 my_script.py
我正在 运行 设置一个基本的 cron,它需要我使用 virtualenvwrapper
设置的环境变量。环境变量设置在/home/ubuntu/.virtualenvs/testcron/bin/activate
当我 运行 命令 cd /home/ubuntu/test_script && /home/ubuntu/.virtualenvs/testcron/bin/python3 my_script.py
时,脚本 运行 没有错误。该脚本导入一个环境变量并打印它。
但是,当我通过 cron (* * * * * cd /home/ubuntu/test_script && /home/ubuntu/.virtualenvs/testcron/bin/python3 my_script.py
) 运行 相同的脚本时,我得到了这个错误。
Traceback (most recent call last):
File "my_script.py", line 7, in <module>
main()
File "my_script.py", line 4, in main
print(os.environ['SOME_ENV_VARIABLE'])
File "/home/ubuntu/.virtualenvs/testcron/lib/python3.5/os.py", line 725, in __getitem__
raise KeyError(key) from None
KeyError: 'SOME_ENV_VARIABLE'
当我运行以下我似乎没有任何问题
~$ /home/ubuntu/.virtualenvs/testcron/bin/python3
>>> import os
>>> os.environ['SOME_ENV_VARIABLE']
'my_env_variable_value'
我是否遗漏了一些明显的东西,virtualenvwrapper 的配置是否存在问题,或者以这种方式 运行ning crons 有问题吗?
/home/ubuntu/.virtualenvs/testcron/bin/python3
) 的 运行 python 允许访问 venv site-packages
但它不会激活 venv。如果你在 bin/activate
中有一些不寻常的东西,你必须在每次需要时都找到它:
* * * * * cd /home/ubuntu/test_script && . /home/ubuntu/.virtualenvs/testcron/bin/activate && /home/ubuntu/.virtualenvs/testcron/bin/python3 my_script.py