2012-07-31 70 views
3

这里是我的结构,如何制作python包?

main.py 
folder1\ 
    button.py 
    folder2\ 
     picturebutton.py 
folder3\ 
    listbox.py 
    folder4\ 
     customlistbox.py 
     folder5\ 
      hyperlistbox.py 

现在,

我有一个名为“widget.py”模块,我想使它接触到所有模块使这里每个模块会能够说import widget或类似的东西。谷歌搜索后,似乎我必须做一个包来做到这一点。

我无法在线使用示例,因为我不知道它们是如何工作的,我希望你们其中一个能够帮助我处理案件。

编辑: 所有文件夹(除了根目录)都有一个__init__.py文件。

回答

2

能够导入一些其他模块并不需要将其作为一个包,它需要将widget模块放在您的PYTHONPATH上。你通常会安装它(编写一个setup.py文件,参见标准库的distutils模块)。

如果您确实需要一个包,每个需要成为包的文件夹都需要有一个__init__.py文件(空白很好)。

+0

如果我把'widget.py'的主要根源,我不会能够从子目录访问它。 – user1513192 2012-07-31 22:57:11

+0

如果你的目录(你的“root”目录)在你的'PYTHONPATH'上,你会这样。只有当它实际上与其他东西相关时,才将“widget”放在那个根目录下。 – Julian 2012-07-31 22:57:39

+0

如果我冻结了应用程序,此方法仍然可行吗?另外,我忘了提及,我的所有文件夹(除了根目录)都有__init__.py文件。 – user1513192 2012-07-31 22:59:38

0

正确的方法是为您的软件包创建setup.py文件,但因为它可能需要时间。以下是捷径。

如果你想经常使用你的模块,就像在脚本中一样。简单的方法是在bashrc/zshrc文件中导出“PYTHONPATH”,并为包含代码的目录提供路径。

例如:

export PYTHONPATH=$PYTHONPATH:$HOME/path/to/package 

做检查终端上使用

echo "$PYTHONPATH" 

编码快乐