首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:确保os.environ和sys.path是相等的:web请求、shell、cron、芹菜

Python:确保os.environ和sys.path是相等的:web请求、shell、cron、芹菜
EN

Stack Overflow用户
提问于 2016-02-05 12:05:52
回答 4查看 1.4K关注 0票数 11

我想确保os.environsys.path对于我们启动Python解释器的所有方式都是相同的:

  • 通过Django和Apache mod_wsgi的网络请求
  • Cron作业
  • 通过ssh进行交互登录
  • 芹菜工作
  • 通过系统开始的作业d

有什么共同的办法解决这个问题吗?

如果是的话,那就太好了:看起来怎么样?

如果不是,可悲的是:每个人都自己解决这个问题。..。解决这个问题的好办法是什么?

操作系统: Linux (支持System d)

更新

更明确的是:

  1. 我希望sys.path在web请求,cron作业,python从shell开始,.
  2. 我希望os.environ在web请求,cron作业,python从shell开始,.

Update2

对于系统,我们使用EnvironmentFile

Update3

我们使用虚拟环境

EN

回答 4

Stack Overflow用户

发布于 2016-02-10 11:45:48

您可以使用恩夫迪尔 python (这是原版)管理环境变量。

如果您是只关注Django的,我建议以编程方式使用settings.py中的envdir

您可以通过编程方式更新环境(例如:在wsgi文件、django的manage.pysettings.py等)

代码语言:javascript
复制
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']

或者您可以通过命令行上的envdir运行进程,例如:envdir envs/prod/ python manage.py runserver

我建议为python、pip等创建别名(因为您不想覆盖系统自己的python),例如:alias python-mycorp="envdir /abs/path/to/envs/prod/ python" (如果您愿意,可以编写完整的shell脚本而不是别名)。

票数 6
EN

Stack Overflow用户

发布于 2016-02-05 14:06:38

这个映射是在第一次导入os模块时捕获的,通常是在Python启动时作为处理site.py的一部分。在此之后对环境所做的更改不会反映在os.environ中,除了通过直接修改os.environ所做的更改外。

他们都必须使用相同的翻译。如果它们是由同一个用户启动的,那么它们很可能是。

票数 2
EN

Stack Overflow用户

发布于 2016-02-10 12:33:24

正如您在sys.path文档中所看到的,它是使用环境变量PYTHONPATH初始化的,然后使用安装相关默认值(站点)进行初始化。所以,他们的意图是不同的。

但是,您可以在解释器调用期间使用-S选项:python -S script.py,以跳过某些站点特定的配置挂钩。尽管如此,您的sys.path中仍然会有标准的库内容。

如果您真的想要os.path['PYTHONPATH'] == sys.path,就应该显式地执行它,如文档所述:

程序可以为自己的目的修改此列表。

放置这类特定操作的标准位置是:

  • sitecustomize模块,通常由站点包目录中的系统管理员创建,可以执行任意配置。
  • 一个usercustomize模块,它的意图与sitecustomize相同,但只有在ENABLE_USER_SITE为真时才执行。
  • 从脚本直接定制到sys.pathsys.path = os.env['PYTHONPATH']
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35223828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档