创建Python“库”的理想方式

时间:2012-08-12 05:37:13

标签: python python-2.x

我想创建一个Python模块的“库”,我可以从几个单独的项目文件夹中访问它。

例如,我希望/ proj1 /和/ proj2 /中的Python脚本可以访问/ lib /。

/lib/help.py
/lib/more_help.py

/proj1/script.py
/proj1/script2.py

/proj2/this_script.py
/proj2/another_script.py

我不希望单个目录包含所有Python脚本,因为这看起来相当混乱。我也绝对不想将相同的/ lib /脚本复制到每个不同的项目中。

在Python中处理这个问题的理想方法是什么?是appending to Python's path吗?或者这更像是一个黑客?这似乎具有使文件不太便携的缺点。或者是this question/answer关于使用相对路径?或其他什么?

我应该补充一点,我对Python 2.x感兴趣而不是3.x,如果重要的话。

3 个答案:

答案 0 :(得分:11)

lib/变为package,然后将其放入sys.path中的一个目录中(或添加新条目)。然后你可以导入例如lib.help进入您的项目。

答案 1 :(得分:3)

遵循每个人都采用的标准方法:使用正确的setup.py使代码成为正确的Python包。好处是:easy_install'able,易于分发,易于生成命令行脚本(通过console_scripts入口点)等....

答案 2 :(得分:2)

我认为您可以用来控制项目环境的最佳工具是virtualenv。您创建一个新的虚拟环境并在那里安装您的软件包,然后使用virtualenv为您提供的python可执行文件运行您的项目。

可能你应该在你的库中使用distutils,这样用virtualenv安装它真的很容易,因为virtualenv安装setuptools或在虚拟环境中分发,从而允许你从pypi或本地安装在虚拟环境包中机。

还可以创建一个自定义引导脚本,在创建虚拟环境后自动安装一些库。