2012-03-27 36 views
0

我目前正在开发一个有自定义设计的Python包的项目,以及一些使用该包的脚本。构建这样的最佳方式是什么,以便我可以从任何地方运行脚本而不会收到未找到包的错误?我想建立封装测试为好,所以我想有类似的:包含包和脚本的Python项目的正确结构?

 
project/ 
|--src 
| |--some_package 
|--test 
|--scripts 

但后来我不知道如何使脚本导入我的定制包,这样我可以运行/从任何地方引用脚本而不发现“包无法找到”错误。任何帮助表示赞赏!

回答

0

在其他机器上安装和运行这些脚本的一种方法是使用distutils打包它们。见http://docs.python.org/library/distutils.html。否则,如果您将__init__.py文件放入树中的某个目录中,Python会将该目录看作一个包,并允许您从其中导入模块。举例来说,如果你有这样的结构:在some_script.py

project/ 
|some_script.py 
    |--some_package 
     |__init__.py 
     |some_module.py 
|--test 
    |__init__.py 
|--scripts 
    |__init__.py 

你可以这样做:

import some_package.some_module 

这将允许你这样做从子目录进口没有复杂的安装把你的模块某处在Python路径中。 “测试”和“脚本”目录也可以做同样的事情。 (您可能已经知道这一点,但__init__.py可以只是一个空文件。)

+0

是的,但这是丑,我真的不希望有这样做在每个脚本的顶部。最重要的是,我敢肯定,这需要绝对路径,在这种情况下,我的路径将与使用脚本的其他人不同,因此不可伸缩。 – Eli 2012-03-27 21:54:33

+0

那么,你的问题并没有说你想把它安装在其他机器上。在这种情况下,您需要http://docs.python.org/library/distutils.html。 – alan 2012-03-27 22:04:58

+0

我编辑了答案,以显示不使用Python路径的不同方法。我不知道,你可能会认为这太丑了。 – alan 2012-03-27 22:52:55