2009-02-28 25 views
4

我刚开始使用Python,我想使用外部RSS类。我在哪里放课,如何导入?我想最终能够分享python程序。Python中的外部类

回答

1
from [module] import [classname] 

模块位于python路径的某处。

+0

我会说略有不同。“python path”让我想到了PYTHONPATH这个环境变量。 PYTHONPATH实际上通常是空的,但sys.path永远不会是空的,并且sys.path决定了模块的位置。 PYTHONPATH正是添加到默认sys.path条目中的内容。 – 2009-02-28 21:04:29

1

关于模块和包:

  • 一个模块是.py结尾的文件。你可以把你的课程放在这样一个文件中。正如Andy所说的那样,它需要在你的python路径中(PYTHONPATH)。通常你会把附加模块放在脚本所在的同一目录中,但是可以直接导入。

  • 软件包是一个包含__init__.py(可以为空)并包含模块文件的目录。然后您可以导入一个la from <package>.<module> import <class>。再次,这需要在您的Python路径。

您可以找到更多in the documenation

+0

使用`反引号`引用格式化字符,例如`__init__`。 – gahooa 2009-02-28 21:05:28

13

关于import声明:

(良好的书面记录是在http://effbot.org/zone/import-confusion.htm和Python的教程在http://docs.python.org/tutorial/modules.html进入详细)

有两种普通方法是导入代码到Python程序。

  1. 模块
  2. 软件包

模块是简单地在的.py结尾的文件。为了python,它必须存在于搜索路径中(如sys.path中定义的那样)。搜索路径通常由正在运行的.py的相同目录以及python系统目录组成。

考虑到以下目录结构:

myprogram/main.py 
myprogram/rss.py 

从main.py,您可以 “进口” 的RSS类运行:

import rss 
rss.rss_class() 

#alternativly you can use: 
from rss import rss_class 
rss_class() 

封装提供了一种更加结构化的方式来包含更大的Python程序。它们只是一个包含__init__.py以及其他python文件的目录。

只要软件包目录位于sys.path上,就可以使用与上述完全相同的软件。


要找到你的当前路径,运行此:

import sys 
print(sys.path) 
2

我真的不喜欢回答这么晚了,但我并不完全满足于现有的答案。

我刚刚开始Python,我想使用外部RSS类。我在哪里放课,如何导入?

你把它放在一个python文件中,并给python文件扩展名为.py。然后,您可以导入代表该文件的模块,并访问该类。假设你想导入它,你必须把python文件放在你的导入搜索路径的某个地方 - 你可以在运行时用sys.path看到这个,并且可能最需要知道的是站点包(特定于安装)和当前目录('')通常位于导入搜索路径中。当你有一个单一的同类项目时,你通常将它放在与其他模块相同的目录中,并让它们从同一个目录中相互导入。

我想最终能够共享python程序。

将其设置为独立文件后,可以使用distutils将其设置为分发。这样你就不必担心它应该安装在哪里,distutils会为你担心。还有很多其他的分发方式,许多操作系统特定的distutils适用于模块,但是如果您想分发适合用户运行的程序,则可以使用其他选项,例如在Windows上使用py2exe

至于模块/软件包的区别,好吧,在这里。如果你有一大堆你想要分解的类,这样你就没有一大堆python文件了,你可以把它分解成一个目录中的多个python文件,并给目录一个__init__.py。需要注意的重要一点是,从Python来看,软件包和其他模块没有区别。一个包是一个模块,它只是在文件系统上表示一个模块的一种不同方式。同样,一个模块而不是只是一个.py文件 - 如果是这种情况,sys不会是一个模块,因为它没有.py文件。它是内置于口译员的。在文件系统上有无数种表示模块的方法,因为您可以添加可以创建除目录和.py文件之外的方式来表示模块的导入挂钩。假设,人们可以创建一个导入钩子,使用spidermonkey将JavaScript文件作为Python模块加载。

0

如果你想存储你的RSS文件在不同的地方使用sys.append(“”)和噘嘴模块在该目录中,并使用 进口或进口*

0

第一个文件,你有创建类,是 “first.py”

first.py:

class Example: 
    ... 

创建第二个文件,要使用包含在 “first.py” 之类,这是 “second.py”

myprogram/first.py 
myprogram/second.py 

然后在第二个文件,调用包含在第一个文件中的类,你只需键入:

second.py:

from first import Example 
...