2

是否可以将 python 模块 'mechanize' 和 'BeautifulSoup' 封装到一个 .py 文件中?

我的问题如下:我有一个需要机械化和 BeautifulSoup 的 python 脚本。我从 php 页面调用它。webhost 服务器支持 python,但没有安装模块。这就是为什么我想这样做。

对不起,如果这是一个愚蠢的问题。

编辑:谢谢大家的回答。我认为解决这个问题的解决方案是围绕 virtualenv。有人可以用非常简单的术语来解释我吗?我已经阅读了 virtualenv 页面,但仍然很困惑。再次感谢。

4

3 回答 3

4

您实际上不必合并文件,或将它们安装在系统范围的位置。只需确保这些库位于您的 Python 脚本(因此,您的 PHP 应用程序)可读的目录中并添加到 Python 加载路径中即可。

sys.pathPython 运行时在数组的目录中搜索库。您可以在运行时使用PYTHONPATH环境变量将目录添加到该数组,或者通过将项目显式附加到sys.path. 下面的代码片段,添加到 Python 脚本,将脚本所在的目录添加到搜索路径,隐式地使位于同一位置的任何库都可以导入:

import os, sys
sys.path.append(os.path.dirname(__file__))
于 2009-09-18T21:17:35.013 回答
2

查看 virtualenv,创建一个本地 python 安装,您可以在其中安装 BeautifulSoup 和所有其他您想要的库。

http://pypi.python.org/pypi/virtualenv

于 2009-09-18T21:43:36.200 回答
0

不,你不能(通常),因为这样做会破坏 python 使用的模块搜索方法(文件和目录)。我想您可以通过一些 hack 生成模块层次结构,而无需实际的文件系统布局,但这是一个巨大的 hack,可能类似于

>>> sha=types.ModuleType("sha")
>>> sha
<module 'sha' (built-in)>
['__doc__', '__name__']
>>> sha.foo=3
>>> sha.zam=types.ModuleType("zam")
>>> sha.foo
3
>>> dir(sha)
['__doc__', '__name__', 'foo', 'zam']

但在任何情况下,您都必须生成创建此布局的代码并将这些内容存储到正确命名的标识符中。

您需要的可能是学习使用 .egg 文件。它们是包含您的库的独特聚集实体,例如 .jar 文件。

于 2009-09-18T21:48:04.620 回答