python本地模块

时间:2011-10-11 21:22:51

标签: python python-module

我有几个项目目录,并希望拥有特定于它们的库/模块。例如,我可能有这样的目录结构:

myproject/
  mymodules/
    __init__.py
    myfunctions.py
  myreports/
    mycode.py

假设add中有一个名为myfunctions.py的函数,我可以使用最简单的例程从mycode.py调用它:

execfile('../mymodules/myfunctions.py')
add(1,2)

但为了更加成熟,我也可以做到

import sys
sys.path.append('../mymodules')
import myfunctions

myfunctions.add(1,2)

这是最惯用的方式吗?还有一些关于修改PYTHONPATHos.environ['PYTHONPATH']?)的提及,但我应该研究这个或其他事情吗?

另外,我在类语句中看到import语句,在其他实例中,在包含类定义的Python文件的顶部定义。是否有正确/首选的方式来做到这一点?

1 个答案:

答案 0 :(得分:11)

除非有充分的理由,否则请勿使用execfilesys.path.append。相反,只需将您的代码安排到proper python packages并像进行任何其他库一样进行导入。

如果您的mymodules实际上是一个大型项目的一部分,那么请将您的包装设置为:

myproject/
    __init__.py
    mymodules/
        __init__.py
        myfunctions.py
    myreports/
        __init__.py
        myreportscode.py

然后您可以从代码中的任何位置导入mymodules,如下所示:

from myproject.mymodules import myfunctions
myfunctions.add(1, 2)

如果您的mymodules代码被许多独立且不同的项目使用,那么只需将其置于一个包中并将其安装到需要使用的任何环境中。