1

将该行放在 .bashrc(Mac 上的 .profile)中,工作目录在路径上。放开它,它不是。

export PYTHONPATH=$PYTHONPATH

我注意到带有该行的 shell 在其 env 输出中有一个 PYTHONPATH= 行,而那些没有的则没有,所以也许这很重要。如果 PYTHONPATH 有一些有效目录但以 ':' 字符开头,Python 也会添加当前工作目录。(只需将 PYTHONPATH 设置为某个有效目录就会破坏工作目录的包含。)

为什么会这样?确保当前工作目录位于 sys.path 上的最佳做法是什么?

4

2 回答 2

2

如果要确保它,则显式添加.到 pythonpath:

export PYTHONPATH=.:$OTHER_DIRS:$PYTHONPATH

如果您还想在您的当前工​​作目录中sys.path设置PYTHONPATH其他内容,那么您可以尝试在您的sitecustomize.pyusercustomize.py通过插入以下内容进行设置:

sys.path.append(os.getcwd())

附加说明:

由于引入了每个用户的站点包,因此最好将您的用户包放在那里(您可以使用 获取文件夹名称site.USER_SITE)。pip 还可以使用该--user选项轻松安装软件包,所以我发现至少对我来说很少有必要搞乱PYTHONPATH.

于 2012-06-01T18:31:31.503 回答
1

根据文档,(这应该可以消除您的疑虑)

PYTHONPATH 是一个环境。VARIABLE 增加了模块文件的默认搜索路径。格式与shell 的PATH 相同:一个或多个由os.pathsep 分隔的目录路径名(例如Unix 上的冒号或Windows 上的分号)。不存在的目录会被静默忽略。

除了普通目录之外,单个 PYTHONPATH 条目可能引用包含纯 Python 模块(源代码或编译形式)的 zipfile。扩展模块不能从 zip 文件中导入。

默认搜索路径取决于安装,但通常以 prefix/lib/pythonversion 开头(参见上面的 PYTHONHOME)。它始终附加到 PYTHONPATH。

如上文接口选项中所述,将在 PYTHONPATH 前面的搜索路径中插入一个附加目录。搜索路径可以在 Python 程序中作为变量 sys.path 进行操作。

于 2012-06-01T18:25:22.407 回答