【问题标题】:Python path: Reusing Python modulePython 路径:重用 Python 模块
【发布时间】:2010-02-24 11:03:54
【问题描述】:

我编写了一个小型数据库访问模块,该模块在许多程序中被广泛重用。

出于备份和版本控制的原因,我的代码存储在单个目录树 /projects 中,因此模块应放置在此目录树中,例如 /projects/my_py_lib/dbconn.py

我想轻松配置 Python 以自动搜索 /projects/my_py_lib 目录结构中的模块(当然,__init__.py 应该放在任何子目录中)。

在 Ubuntu 下最好的方法是什么?

谢谢,

亚当

【问题讨论】:

    标签: python ubuntu path


    【解决方案1】:

    您可以将PYTHONPATH 环境变量添加到您的.bashrc 文件中。例如。

    export PYTHONPATH=/projects/my_py_lib
    

    【讨论】:

      【解决方案2】:

      在 linux 上,这个目录会自动添加到你的 sys.path 中用于 pythonN.M

      ~/.local/lib/pythonN.M/site-packages/
      

      所以你可以为你正在使用的每个版本的 python 放置你的包。

      每个版本的python都需要一份副本,否则每次导入不同python版本的模块都会重新编译.pyc文件

      如果模块仅适用于您已安装的某些 python 版本,这也允许细粒度控制

      如果您创建此文件

      ~/.local/lib/pythonN.M/site-packages/usercustomize.py
      

      每次启动python解释器时都会导入

      【讨论】:

      • +1 不错,不知道那个。你有文档的链接吗?
      • @Adam Matan,您可以将符号链接放入您的代码树,但请记住,如果您使用不同版本的 Python,.pyc 文件会被破坏,最好有一个“发布”脚本把它复制到那里。
      • @Arron Digulia,文档位于 std 库中的 site.py :)
      【解决方案3】:

      另一种选择是在/usr/lib*/python*/site-packages/ 中创建软链接:

      ln -s /projects/my_py_lib /usr/lib*/python*/site-packages/
      

      这将使项目对所有 Python 程序可见,并且任何更改也将立即可见。

      主要缺点是您最终将拥有 root 或其他用户拥有的 *.pyc 文件,除非您确保在以其他用户身份启动 python 之前自己编译这些文件。

      【讨论】:

        猜你喜欢
        • 2016-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-01
        • 2011-08-04
        • 1970-01-01
        • 2017-08-10
        • 2023-03-13
        相关资源
        最近更新 更多