我創建了一個用于pyenv virtualenv 3.5.9 projectname開發 django 項目的虛擬環境。如何設置環境變量供我的代碼使用?我嘗試像這樣添加環境變量 DATABASE_USER /Users/developer/.pyenv/versions/projectname/bin/activate :export DATABASE_USER="dbuser"當我嘗試echo $DATABASE_USER打印一個空字符串時。嘗試安裝zsh-autoenv現在我可以echo $DATABASE_USER獲取 .autoenv.zsh 文件中設置的值。但我似乎無法讓環境變量可用于我的 django 代碼:如果我嘗試os.getenv('DATABASE_USER', '')在 virtualenv 內的 python shell 中,我得到''可能出什么問題了?zsh-autoenv 變量是否僅適用于 zsh shell,而不適用python manage.py shell?
2 回答

慕標5832272
TA貢獻1966條經驗 獲得超4個贊
正如您所注意到的,pyenv
似乎并沒有實際使用該bin/activate
文件。他們沒有說激活方法是什么,但是像你一樣,在那里添加環境變量沒有產生任何結果。
最后,他們最終安裝了autoenv,它標榜自己是基于目錄的環境。它允許您在目錄中創建 .env 文件,當您cd
進入該目錄時,它會運行 .env 文件。您可以將其用作環境變量,也可以向其中添加其他任何內容。
我在 autoenv 頁面上注意到他們說你應該使用direnv來代替,因為它具有更好的功能并且是更高質量的軟件。這些都不是特定于 Python 或 pyenv 的,如果您從目錄外部調用 python 代碼,它們可能無法工作。由于您使用的是 pyenv,因此您可能會從目錄中運行代碼,因此我認為兩者都很有可能起作用。

慕運維8079593
TA貢獻1876條經驗 獲得超5個贊
我direnv
在 MacOS/zsh 上安裝并配置為:
brew install direnv
eval "$(direnv hook zsh)"
cd <your-project>
echo export FOO=foo > .envrc
direnv grant .
echo $FOO
它就像一個魅力。
添加回答
舉報
0/150
提交
取消