У меня есть сайт WordPress, работающий с Apache. С этого сайта мне нужно запустить код Python, но библиотеки, которые мне нужны, настроены в среде Anaconda. Чтобы активировать среду анаконды, мне нужно запустить:
source activate my_environment
…на терминале. На моем .PHP код, с другой стороны, он будет выглядеть примерно так:
shell_exec('source activate my_environment');
Дело в том, что я могу активировать свою среду анаконды только из терминала с тем пользователем, который ее создал. Как я могу настроить его так, чтобы мой сервер Apache мог активировать его из фрагмента PHP, который есть на моем сайте?
Поскольку активация среды должна происходить в одном и том же процессе оболочки, вы не можете активировать среду так, как вы пытаетесь. Тем не менее, вы можете запустить версию Python, установленную в этой среде напрямую, хотя, если у вас есть какие-либо пакеты, которые изменяют среду, эти изменения не будут восприняты без активации среды. Что-то вроде
/path/to/my_environment/bin/python script_name.py
PS: среда Conda активируется conda activate env_name
в последних версиях Conda (> = 4.4)
Если вам нужно активировать среду conda из apache, команда conda может не работать.
Однако, если вы знаете, где путь к вашей среде conda, вы также можете использовать
jalazbe: $ source /conda-path-env/bin/activate
Пример:
jalazbe: $ source /home/myuser/myenv/bin/activate
Он должен работать