【问题标题】:Setting environment variable in Python without OS module在没有 OS 模块的 Python 中设置环境变量
【发布时间】:2015-03-26 20:38:18
【问题描述】:

由于大小限制,我正在使用不使用 OS 模块的 python 构建,并且我试图让它在启动时从目录中导入模块。据我了解,我可以使用 PYTHONPATH 进行设置,但是如果没有 os 模块,我将如何设置该变量?

【问题讨论】:

  • 你必须用一些shell代码来启动你的python。你只需要在那里改变环境变量。
  • 有没有办法在没有 OS 模块的情况下设置 PYTHONSTARTUP?我可以很好地设置 pythonhome 和 pythonpath 但 pythonstartup 似乎不起作用。
  • 您可以在 shell 中更改所有这些。但根据您的描述,您似乎在低端嵌入式系统中使用 python,我个人认为这是人类历史上最糟糕的想法。
  • 取得了一些进展,能够使用 export PYTHONSTARTUP=$PYTHONSTARTUP:/path/ 设置变量,但它似乎包含 : 在路径中。现在我无法覆盖变量的值,它只是将任何新值附加到末尾
  • 您总是可以通过直接分配来覆盖 env var。 VAR=10.

标签: python environment-variables


【解决方案1】:

你想要PYTHONSTARTUP,你可以在其中创建一个启动文件,然后你可以导入任何你想要的模块,这些模块将在你启动 python shell 时被导入。

在我的主目录中,我有一个文件 .startup.py,如下所示:

import datetime, os, pprint, sys, time
print("(modules imported datetime, os, pprint sys, time)")

每次我启动一个 shell 时,模块都会被导入:

~$ ipython
Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
Type "copyright", "credits" or "license" for more information.

IPython 3.0.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.
(imported datetime, os, pprint, re, sys, time)

在 ubuntu 上,我的 .bashrc 中有 export PYTHONSTARTUP=$HOME/.startup.py

我在名为my_mods 的目录中保留了几个不同的模块,为了将其添加到我的pythonpath,我在.bashrc 中再次添加了export PYTHONPATH=$HOME/my_mods

【讨论】:

  • 这正是我想做的。但是,我正在使用busybox,但找不到.bashrc 文件。我在 /etc/ 中找到了一个 rc 文件,但编辑该文件以包含导出命令似乎没有效果。有什么想法吗?
  • 添加一个.sh文件,导出到/etc/profile.d,你需要注销并生效
  • 没有 profile.d 存在...如果我创建它会引用它吗?
  • 我对busybox不太熟悉,但我想它会起作用的。您可以编辑/etc/profile 并将其添加到那里,但我建议先尝试.d,还有/etc/environment
  • 这两个都试过了……不走运。你知道有什么方法可以记录启动时正在执行的脚本或文件吗?我在想这个东西正在使用我不知道的其他文件作为启动脚本,而不是典型的。
【解决方案2】:

解决方案:

窗口

cmd /c "set app_env=development && python /path/to/python/script.py"

Linux

21:14 development [~]% export APP_ENV=development && python
Python 2.7.6 (default, Jan 14 2015, 21:37:15) 
[GCC 4.8.2 20140120 (Red Hat 4.8.2-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> print os.environ.get('APP_ENV');            
development
>>> 

这样你也可以设置 PYTHONPATH

【讨论】:

  • 尝试在没有 OS 模块的情况下执行此操作。我想在 shell 中设置 pythonpath,但是每次启动这个 python 实例时我都必须设置 pythonpath。试图找出一种方法来永久设置pythonpath,而不是每次都设置它。
  • 你用的是linux还是windows?
  • 您可以将导出的 PYTHONPATH=value 放在 /etc/rc.local(所有用户都可用)或 ~/.bashrc(因此它只对您自己的登录用户可用)
  • 尝试将 export PYTHONPATH=path 添加到 /etc/rc 并且在 shell 启动时仍然没有改变值。有什么地方可以检查它是否引用了正确的 rc 文件?如果有帮助,我正在使用busybox。
  • 你在使用 docker 吗?
猜你喜欢
  • 1970-01-01
  • 2021-04-10
  • 2014-03-20
  • 2019-12-23
  • 2016-03-20
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多