【问题标题】:Allowing Apache to use Locally Installed Python Modules, on a Server that I don't have root access [duplicate]允许 Apache 在我没有 root 访问权限的服务器上使用本地安装的 Python 模块 [重复]
【发布时间】:2015-07-22 13:25:24
【问题描述】:

我正在尝试像这样从 php 执行 python 脚本:

$output= shell_exec("/usr/bin/python grabData.py);

唯一的问题是,我使用的是本地安装的模块。所以我得到了错误:

Traceback (most recent call last):
File "/the path/grabData.py", 
line 2, in <module>
import xlrd
ImportError: No module named xlrd

有什么方法可以让 Apache 使用我的模块吗? 注意:就像我在标题中所说的,我没有 root 访问权限。

【问题讨论】:

    标签: php python apache


    【解决方案1】:

    virtualenv 可能会为您提供在共享托管世界中使用您自己的 Python 环境所需的设置。

    https://virtualenv.pypa.io/en/latest/

    【讨论】:

      【解决方案2】:

      确保您的模块位于 Python 搜索路径中,对于 Apache 用户,该路径可能与您的不同。您可以在环境变量中设置路径,也可以在尝试导入之前从 Python 代码本身设置路径。

      请注意 [以下][1] 中提到的依赖于安装的默认值

      6.1.2。模块搜索路径

      当一个名为spam 的模块被导入时,解释器会搜索一个 包含输入脚本的目录中名为 spam.py 的文件和 然后在环境变量指定的目录列表中 PYTHONPATH。这与 shell 变量PATH 具有相同的语法,即 是,目录名称的列表。当PYTHONPATH 未设置时,或者当 在那里找不到文件,搜索继续 安装依赖的默认路径;在 Unix 上,这通常是 .:/usr/local/lib/python.

      实际上,模块是在给出的目录列表中搜索的 变量sys.path 从包含的目录初始化 输入脚本(或当前目录),PYTHONPATH 安装依赖的默认值。这允许 Python 程序知道 他们正在做什么来修改或替换模块搜索路径。笔记 那是因为包含正在运行的脚本的目录位于 搜索路径,重要的是脚本不能与 标准模块,否则 Python 将尝试将脚本加载为 导入该模块时的模块。这通常是一个错误。 有关详细信息,请参阅标准模块部分。

      查看这些问题:

      Expand Python Search Path to Other Source

      How to import a module given the full path?

      【讨论】:

      • 是的,我认为问题在于 Apache 用户有不同的 PATH,所以我需要强制它在我的安装中查看?这就是我不知道该怎么做。正如一个注释,当从我的用户帐户调用该脚本时,该脚本会起作用。
      猜你喜欢
      • 1970-01-01
      • 2020-05-15
      • 2014-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多