【问题标题】:How to have python program listen on an environment variable?如何让python程序监听环境变量?
【发布时间】:2014-03-23 21:49:01
【问题描述】:

对不起,如果这个问题不清楚。

我用python写了一个库,要上传到PyPI(pip)。我想让我的程序运行并响应环境变量的输入。

例如,参考这个库: https://github.com/rg3/youtube-dl

通过pip安装后,用户可以通过pip即时调用程序。

$ pip install youtube-dl
$ youtube-dl http://youtube.com/video?v=sdfafd7f6s

# What's cool is that the above even works in a virtualenv!

我也希望将我的程序放在环境变量中,但我不确定如何设置。

有什么线索吗?谢谢!

【问题讨论】:

  • er.. 我认为这与环境变量无关? PATH 上的可执行文件可以在不指定绝对路径的情况下运行。
  • 你说得对,我认为我提供的示例修改了路径,但我想知道在安装过程中这样做的最佳方法。
  • 您的问题的一个更好的标题可能是“如何将 Python 程序安装为可执行文件?”

标签: python environment-variables virtualenv pip pypi


【解决方案1】:

您的问题不清楚。看起来您想要的是从命令行运行程序而不显式调用 Python 解释器。

为此,您只需在 setup.py 中添加几行代码来声明 entry point。这在Automatic Script Creation 中有解释。基本上,你需要一个 console_scripts 项:

setup(
    # other arguments here...
    entry_points = {
        'console_scripts': ['foo = my_package.some_module:main_func']
    }
)

您可以在setup.py file for youtube-dl 的第 68-71 行看到类似的内容。

如果你真的想读取环境变量,请使用 os 模块中的environ

import os

try:
    important_info = os.environ['IMPORTANT_INFO']
except KeyError:
    raise Exception('Set IMPORTANT_INFO environment variable, please!')

【讨论】:

  • 谢谢!他们在 youtube-dl 中的代码很相似,我应该注意到了哈哈。
猜你喜欢
  • 1970-01-01
  • 2012-04-10
  • 2021-09-21
  • 1970-01-01
  • 2018-07-01
  • 2017-09-04
  • 2014-09-30
  • 2022-01-26
  • 1970-01-01
相关资源
最近更新 更多