Я использую c-shell, и я привык использовать setenv. Мне нужно выполнить эквивалентную команду из сценария python. Я попытался использовать os.environ ['JAVA_HOME'] = "/ usr/local/java", который работает с интерпретатором python, но когда мой скрипт выполняется из командной строки, оболочка, в которой он запускался, отражает новую заданную переменную среды , Может кто-нибудь помочь, я новичок в написании сценариев, надеюсь, я поставил свой вопрос ясным.Настройка переменных окружения из сценария python
ответ
Если вы используете subprocess.Popen
, оно должно быть достаточно, чтобы передать параметр env
конструктору, чтобы все, что вам нужно в качестве словаря (вы можете скопировать содержимое os.environ
и добавить свои собственные переменные окружения, если вы хотите).
Как объясняется в How to use export with Python on Linux, установка переменной окружения в любом процессе (например, сценарий Python) не может повлиять на какие-либо родительские процессы (такие как процесс csh, из которого выполняется сценарий Python).
Что вы можете сделать, это настроить скрипт Python командой setenv
, а затем оценить результат в вашей оболочке как команду.
Например:
csh% cat foo.py
#!/usr/bin/python
import os;
os.environ["JAVA_HOME"] = "/usr/local/java"
print "setenv JAVA_HOME", os.environ["JAVA_HOME"]
csh% ./foo.py
setenv JAVA_HOME /usr/local/java
csh% echo $JAVA_HOME
JAVA_HOME: Undefined variable.
csh% eval `./foo.py`
csh% echo $JAVA_HOME
/usr/local/java
csh%
И вы можете создать псевдоним в вашем ~/.cshrc
сделать eval `...`
, или просто вызвать его непосредственно из вашего .cshrc
или .login
(в зависимости от того, что вы пытаетесь достичь).
Я знаю, что это было грехом, но я решил это немного иначе. Возможно, это даже не самое красивое решение, но оно работает.
Я создал скрипт под названием env.sh
#!/bin/tcsh
eval $*
Тогда в моем питона сценарий под названием подпроцесс.
output = subprocess.Popen(["env.sh", "setenv", "DISPLAY", "remhost:0"], stdout = subprocess.PIPE).communicate()[0].split()
Это работает для меня, не забудьте сделать env.sh исполняемым, выполнив «CHMOD + х env.sh»
Просто смешно, что вы на самом деле называете его 'env.sh', и он начинается с' #!/Bin/tcsh'. – Danosaure
- 1. Изменение переменных окружения из сценария Python
- 2. Настройка переменных окружения в python
- 3. Настройка переменных окружения удаленно?
- 4. Настройка переменных окружения Linux
- 5. Ubuntu: настройка переменных окружения
- 6. Настройка переменных окружения mkl
- 7. Python - Настройка/Получение переменных окружения и добавлений
- 8. Настройка переменных окружения в Mathematica
- 9. Настройка переменных окружения в Rails
- 10. Настройка переменных окружения из двух строк вывода
- 11. Настройка переменных окружения в Qt Creator путем поиска сценария оболочки
- 12. Настройка переменных окружения в макинтош
- 13. JNLP/Webstart - Настройка переменных окружения
- 14. Autotools: настройка «влиятельных переменных окружения»
- 15. Настройка переменных окружения с куклой
- 16. Настройка переменных окружения Динамически в Linux
- 17. получение параметров из переменных окружения
- 18. Чтение переменных окружения из файла окружения
- 19. Настройка переменных среды из сценария TCL
- 20. Настройка среды окружения superisord Настройка приложения
- 21. Получение python 2.4.5 из моих переменных окружения
- 22. Настройка переменных окружения в рубиновом камне
- 23. установка tomcat и настройка переменных окружения
- 24. Настройка переменных окружения для приложений Phusion Passenger
- 25. Настройка переменных среды из Gradle
- 26. Настройка переменных окружения в Java Applet
- 27. Настройка переменной окружения PHP при запуске сценария командной строки
- 28. Настройка глобальных переменных окружения в окнах программно
- 29. Код Visual Studio: настройка переменных окружения
- 30. Настройка переменных окружения для одного пакета
дубликата http://stackoverflow.com/questions/1506010/how -to-use-export-with-python-on-linux? – Ski