[英]Using /etc/environment in Python virtualenv
我正在研究一個使用python-daemon軟件包啟動Bottle應用程序的守護程序腳本。 腳本是/etc/init.d/app.sh
在/ etc / environment中設置了一些環境變量,這些變量將在應用程序的settings.py文件(os.environ)中使用。
激活virtualenv后,所有系統環境變量都將被刪除(包括在/ etc / environment中設置的變量)。
我正在使用的初始化腳本是
. /root/webapps/myapp/bin/activate
case "$1" in
start)
echo "Starting server"
# Start the daemon
python /root/webapps/myapp/project/index.py start
;;
stop)
echo "Stopping server"
# Stop the daemon
python /root/webapps/myapp/project/index.py stop
;;
restart)
echo "Restarting server"
python /root/webapps/myapp/project/index.py restart
;;
*)
# Refuse to do other stuff
echo "Usage: /etc/init.d/app {start|stop|restart}"
exit 1
;;
esac
exit 0
同樣,當我檢查在ipython shell中的/ etc / environment中定義的環境變量時,變量顯示正常。 只有當我嘗試使用init腳本啟動應用程序時,所有內容都變為空白。
我正在尋找的是在virtualenv內的應用程序中使用/ etc / environment中定義的變量的正確方法。
嘗試將以下內容添加到/etc/init.d/app.sh
腳本的頂部:
source /etc/environment
然后,當您使用init腳本啟動應用程序時,python應該可以看到/etc/environment
設置的所有環境變量。
激活腳本沒什么特別的,它只是修改您的路徑。 您可以在啟動器中實現相同的目的:
. /etc/environment
export PATH=/root/webapps/myapp/bin:$PATH
export VENV_BIN=/root/webapps/myapp/bin
export PROJECT_ROOT=/root/webapps/myapp/project
case "" in
start)
echo "Starting server"
# Start the daemon
$VENV_BIN/python $PROJECT_ROOT/index.py start
;;
stop)
echo "Stopping server"
# Stop the daemon
$VENV_BIN/python $PROJECT_ROOT/index.py stop
;;
restart)
echo "Restarting server"
$VENV_BIN/python $PROJECT_ROOT/index.py restart
;;
*)
# Refuse to do other stuff
echo "Usage: /etc/init.d/app {start|stop|restart}"
exit 1
;;
esac
exit 0
下面的鏈接提供了有趣的修復。 我將在某種程度上修改我的應用程序以使其正常運行
https://unix.stackexchange.com/questions/44370/how-to-make-unix-service-see-environment-variables
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.