gue*_*tli 11 python django environment-variables sys.path
我想,以确保os.environ和sys.path是我们开始Python解释所有的方式相同:
有没有一种常见的解决方法?
如果是,那很好:它看起来怎么样?
如果不,那么伤心:每个人都自己解决这个问题.......解决这个问题的好方法是什么?
操作系统:Linux(支持systemd)
更新
更明确:
sys.path在Web请求,cron作业,从shell启动的python中都是一样的,...os.environ在Web请求,cron作业,从shell启动的python中都是一样的,...UPDATE2
对于systemd,我们使用EnvironmentFile
UPDATE3
我们使用virtualenv
您可以使用envdir python端口(这是原始端口)来管理环境变量.
如果您只关心Django,我建议您以settings.py编程方式使用envdir
您可以以编程方式更新的环境(例如:在WSGI文件,Django的manage.py,settings.py等等)
import envdir
import os
# print os.environ['FOO'] # would raise a KeyError
path = '../envdir/prod'
if not os.path.isdir(path):
raise ValueError('%s is not a dir' % path)
envdir.Env(path)
print os.environ['FOO']
Run Code Online (Sandbox Code Playgroud)
或者您可以envdir在命令行上运行您的过程,例如:envdir envs/prod/ python manage.py runserver
我建议为python,pip等创建别名(因为你不想覆盖系统自己的python),例如:( alias python-mycorp="envdir /abs/path/to/envs/prod/ python"或者如果你愿意,写一个完整的shell脚本而不是别名).
该映射是在第一次导入 os 模块时捕获的,通常是在 Python 启动期间作为处理 site.py 的一部分。此时间之后对环境所做的更改不会反映在 os.environ 中,除非直接修改 os.environ 进行的更改。
他们都必须使用同一个口译员。如果它们是由同一用户启动的,则很可能是这样。
| 归档时间: |
|
| 查看次数: |
927 次 |
| 最近记录: |