18

我想创建一个 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 中处理这个问题的理想方法是什么?它是否附加到 Python 的路径?或者这更像是一种黑客行为?这似乎具有使文件的可移植性降低的缺点。还是这个关于使用相对路径的问题/答案?或者是其他东西?

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

4

3 回答 3

12

lib/变成一个,然后把它放在其中一个目录中(sys.path或添加一个新条目)。然后,您可以将例如导入lib.help到您的项目中。

于 2012-08-12T05:53:48.610 回答
3

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

于 2012-08-12T06:14:56.433 回答
2

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

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

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

于 2012-08-12T10:23:46.527 回答