【问题标题】:python scripts issue (no module named ...) when starting in rc.local在 rc.local 中启动时的 python 脚本问题(没有名为...的模块)
【发布时间】:2015-05-22 19:31:27
【问题描述】:

我遇到了一个奇怪的问题,经过几个小时的研究,我正在寻找有关该问题的帮助/解释。 这很简单,我用 python 编写了一个 cgi 服务器,我正在使用一些库,例如 pynetlinux。 当我使用任何用户从终端启动脚本时,它工作正常,没有错误,没有依赖问题。但是当我尝试使用 rc.local 中的脚本启动它时,以下代码会产生错误。

import sys, cgi, pynetlinux, logging

它会产生以下错误:

回溯(最近一次通话最后): 文件“/var/simkiosk/cgi-bin/load_config.py”,第 3 行,在 导入 cgi、sys、json、pynetlinux、login ImportError:没有名为 pynetlinux 的模块

其他依赖项会产生类似的问题。我怀疑一些事情,例如用户在 rc.local(root normaly)中执行脚本并尝试在网络上找到的一些东西但没有成功。

有人可以帮助我吗?

提前感谢。

问候。

Ollie314

【问题讨论】:

    标签: python dependency-management


    【解决方案1】:

    首先,您需要确保您要导入的模块是否安装正确。您可以检查模块的名称是否存在于pip list


    然后,在 python shell 中,检查 Python 查找模块的路径:

        import sys
        sys.path
    

    在我的例子中,输出是:

    ['', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages']
    


    最后,将这些路径附加到 /etc/rc.local 中的 $PATH 变量。这是我的 rc.local 的示例:

        #!/bin/sh -e
        #
        # rc.local
        #
        # This script is executed at the end of each multiuser runlevel.
        # Make sure that the script will "exit 0" on success or any other
        # value on error.
        #
        # In order to enable or disable this script just change the execution
        # bits.
        #
        # By default this script does nothing
    
        export PATH="$PATH:/usr/lib/python3.4:/usr/lib/python3.4/plat-x86_64-linux-gnu:/usr/lib/python3.4/lib-dynload:/usr/local/lib/python3.4/dist-packages:/usr/lib/python3/dist-packages"
    
        # Do stuff
    
        exit 0
    

    【讨论】:

      【解决方案2】:

      你的模块安装路径可能通常来自 .bashrc 或类似的东西。当 .bashrc 不是交互式 shell 时,它不会被获取。 /etc/profile 是您可以进行系统范围路径更改的地方。根据它可能使用的 Linux 版本/发行版 /etc/profile.d/ 在这种情况下 /etc/profile 运行 /etc/profile.d 中的所有脚本,在那里添加一个具有执行权限和 .sh 扩展名的新 shell 脚本.

      【讨论】:

        猜你喜欢
        • 2019-07-31
        • 2020-01-30
        • 1970-01-01
        • 2019-06-27
        • 2021-05-11
        • 2018-03-07
        • 1970-01-01
        • 2023-03-02
        • 1970-01-01
        相关资源
        最近更新 更多