【问题标题】:Should I add my Python project to the site-packages directory, or append my project to PYTHONPATH?我应该将我的 Python 项目添加到 site-packages 目录,还是将我的项目附加到 PYTHONPATH?
【发布时间】:2014-07-01 19:44:06
【问题描述】:

我有一个 Python 项目,它包含三个组件:主要的可执行脚本、这些脚本所依赖的模块以及这些脚本操作的数据(sqlite3 数据库、平面文件等)。顶层有一个__init__.py 文件,以便其他程序在需要时也可以从模块中借用。

问题是,将我的项目移动到默认的站点包目录,或者修改 PYTHONPATH 以包含我的项目上方的一个目录(以便可以从中导入项目)是更“Pythonic”还是“正确”? ?一方面,我所描述的严格来说并不是一个“包”,而是一个“项目”,其中的数据可以被视为一个包。所以我倾向于修改 PYTHONPATH(毕竟 PYTHONPATH 存在一定是有原因的,对吧?)

【问题讨论】:

  • PYTHONPATH,放下手。

标签: python environment-variables pythonpath


【解决方案1】:

绝对不要将您的项目添加到站点包中,这会破坏您的系统 Python 安装,并且会在其他应用程序出现或您需要安装某些东西时回火。

最后有两个流行的选项可以以隔离方式安装 python 应用程序

使用虚拟环境

查看 virtualenv 项目。它允许

  • 创建新的隔离 python 环境 - 该环境的 python 与系统一不同,它有自己的 PYTHONPATH 设置,这允许将所有已安装的包保持为私有。
  • 从命令行激活和停用给定的 virtualenv 以供命令行使用。在activate 之后,你可以运行pip install 等,它只会影响给定的virtualenv install。
  • 从 virtualenv Python 副本开始调用任何 Python 脚本 - 这将使用相关的 virtualenv(注意,无需调用任何 activate

使用zc.buildout

此软件包提供命令buildout。有了这个,您可以使用特殊的配置文件,这允许使用所有包和脚本创建本地 python 环境。

结论

  • virtualenv 今天似乎更受欢迎,我发现它更容易学习和使用
  • zc.buildout 可能也适合你,但请准备好更长的学习时间
  • 安装到系统 Python 目录应始终保留用于非常特殊的情况(pip、easy_install),最好避免。
  • 安装到私有目录并操作 PYTHONPATH 也是一种选择,但您会重复virtualenv 已经提供的功能

【讨论】:

    猜你喜欢
    • 2014-12-19
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 2018-12-13
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多