首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何封装python模块?

如何封装python模块?
EN

Stack Overflow用户
提问于 2009-09-18 21:09:49
回答 3查看 1.4K关注 0票数 2

有没有可能将python模块'mechanize‘和'BeautifulSoup’封装到一个单独的.py文件中?

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

抱歉,如果这是一个愚蠢的问题。

编辑:感谢您的回答。我认为这个问题的解决方案是围绕virtualenv解决的。有没有人能用非常简单的术语给我解释一下?我看了virtualenv页面,但还是很困惑。再次感谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-18 21:43:36

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

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

票数 2
EN

Stack Overflow用户

发布于 2009-09-18 21:17:35

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

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

代码语言:javascript
复制
import os, sys
sys.path.append(os.path.dirname(__file__))
票数 4
EN

Stack Overflow用户

发布于 2009-09-18 21:48:05

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

代码语言:javascript
复制
>>> 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文件一样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1446852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档