【问题标题】:Ideal Way to Create a Python "Library"创建 Python“库”的理想方法
【发布时间】:2012-08-12 05:37:13
【问题描述】:

我想创建一个 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 感兴趣。

【问题讨论】:

    标签: python python-2.x


    【解决方案1】:

    lib/变成package,然后放到sys.path中的一个目录下(或者新增一个条目)。然后您可以导入例如lib.help 进入您的项目。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

        • 我没有听说过这个工具,但一定会查一下。谢谢推荐!
        猜你喜欢
        • 2021-05-16
        • 1970-01-01
        • 2011-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多