【问题标题】:virtual env and python client server in linuxlinux中的虚拟环境和python客户端服务器
【发布时间】:2023-03-23 18:17:01
【问题描述】:

我有一个简单的 django python 服务器进程,需要在 linux 环境中执行(在 virtualenv python 环境中)

目前我的一位同事手动登录 ssh 控制台并通过source bin/activate 命令启动虚拟环境。此后使用以下命令启动 python 服务器

/etc/init.d/start-python-server.sh

注意:这个 sh 文件将 python 服务器作为后台进程启动,侦听端口 8080

有人可以提出一些改进这一点的想法吗?

请分享您的想法。

【问题讨论】:

    标签: python linux django virtualenv


    【解决方案1】:

    您可以在/etc/init.d/start-python-server.sh 的开头添加source <your_env_path>/bin/activate 以自动执行此过程

    【讨论】:

    • 我在 /etc/init.d/start-python-server.sh 中添加了行源 /bin/activate。我怎么知道这个服务器实例被映射到一个 virtualenv。任何查看虚拟环境活动状态的python命令?
    • os.environ['VIRTUAL_ENV'] 会将活动的 virtualenv 文件夹作为字符串返回,如果您的代码在 virtualenv 中运行,否则将返回一个空字符串。您可以使用这种方法来了解您是否在 virtualenv 中。我不确定您对“virtualenv 活动状态”的期望是什么
    • 很抱歉这是一个拼写错误,实际上我想知道活动的虚拟环境文件夹。您的命令返回错误 - 这是否意味着虚拟环境未激活?
    • 错误如下图: >>> import os >>> os.environ['VIRTUAL_ENV'] Traceback (last recent call last): File "", line 1, in 文件“/usr/lib64/python2.6/UserDict.py”,第 22 行,在 getitem 中引发 KeyError(key) KeyError: 'VIRTUAL_ENV' >>>
    • 是的,这意味着您没有在 virtualenv 中运行 python。我说它返回一个空字符串是错误的,要获得预期的行为,您必须以这种方式查询字典:os.environ.get('VIRTUAL_ENV', '')。如果您需要帮助,包括脚本中的activate 脚本,我恳请您发布start-python-server.sh 源代码。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 2019-08-18
    • 1970-01-01
    • 2018-08-20
    • 2019-12-28
    相关资源
    最近更新 更多