如何使用PYTHONPATH在Python中导入整个文件夹

时间:2014-06-24 01:18:38

标签: python import pythonpath

我是python的新手,并尝试将项目文件夹添加到PYTHONPATH。我创建了一个.pth文件,并在我的site-packages文件夹中添加了该文件的根路径。但是,当我尝试导入此文件夹中的.py文件时,只能导入位于根文件夹下的那些文件(例如'/ sample'),但无法导入/ sample文件夹下的那些子文件夹(对于example / sample / 01)。所以我的问题是什么文件以及如何更改它以使我的整个文件夹(包括其所有子文件夹)都可以导入。

在最糟糕的情况下,我可以想到的是写下site-packages中.pth文件中的所有文件夹名称。但我只相信Python将提供一种更有效的方法来实现这一目标。

1 个答案:

答案 0 :(得分:0)

我没有机会使用 .pth 文件。我更喜欢双管齐下的方法:

  • 使用运行 env python shebang ,因此它使用您路径上的第一个 python ,即:

#!/usr/bin/env python

  • 使用 virtualenv 来保持单独的不同环境,并将任何给定程序/程序集的必要库分组在一起。这样做的另一个好处是需求文件(来自 pip freeze 输出)可以存储在源代码管理中,并且可以在任何地方轻松地重新创建环境,例如用于 Jenkins tests,et al。

virtualenv 情况下,可以从 virtualenv bin 目录中显式调用 python 解释器。

对于本例中的本地模块,本地 PyPI 服务器可用于集中自定义模块,它们也可以包含在 requirements 文件中(通过 - -extra-index选项 pip )。

编辑并回复OP的评论:

之前我没有使用过 SublimeREPL ,但是,基于你所描述的场景,我认为总体上最简单的方法可能就是将符号链接这些目录放到你的< em> site-packages (或 dist-packages ,视情况而定)目录。

对于生产服务器来说,这不是一个理想的场景,但就您的目的而言,在客户端盒子上,我认为没问题。如果您不想使用文件夹名称,即import ch1/foo,则需要在这些目录中进行符号链接,这样您就可以import foo。如果您可以使用目录名称,即import ch1/foo,那么您只需要符号链接顶级代码目录。