如何将PYTHONPATH设置为项目目录



我正试图从不同的目录导入模块:

from preprocess.utils import get_image但这是我得到的错误:

ModuleNotFoundError: No module named 'preprocess'

我尝试编辑.batch_profile,并按如下方式设置PYTHONPATH,但它仍然无法修复错误:

export PYTHONPATH="/Users/username/documents/project_directory/"

如何修复此错误?

Python自动将项目目录添加到模块加载路径(sys.path(中。但是,根据运行文件的方式,拾取的目录会有所不同。运行python preprocess/filename.py时,添加到加载路径的目录是脚本所在的目录:preprocess。如果您将程序作为模块执行,请将其作为python -m preprocess.filename运行,当前工作目录是添加到加载路径的目录,您的代码应该可以工作。

如果您想使用python preprocess/filename.py语法执行脚本,最简单的修复方法是将filename.py移动到项目根目录,或者制作一个将驻留在根目录中并导入preprocess.filename的包装脚本。

export PYTHONPATH="/Users/username/documents/project_directory/"也应该起作用,但它并不是很好;如果你开始做另一个项目怎么办?除此之外,只要您已经确保它被实际执行,那么将它放入.bash_profile应该是可行的。在OSX上,当您打开一个新的终端时,它会自动执行。在大多数其他版本的UN*X上,它只在您登录时执行。如果您对.bash_profile进行了更改,则在您触发上述操作(新终端或重新登录(或使用source ~/.bash_profile显式执行更改之前,这些更改不会生效。

您可以通过执行以下内容作为preprocess/filename.py:中的第一行来检查哪个目录被自动添加到加载路径

import sys; print(sys.path)

我使用windows,也无法更改"巨蟒";可以预见地工作。

在你的情况下,你可以做一些类似的事情

import sys
sys.path.insert(0,"path_that_you_want")

根据您的python版本,您可能需要在该目录和所有子目录中放置一个__init__.py文件。空白__init__.py文件可以。

请注意,对于某些代码编辑器中的语法高亮显示,您需要在代码编辑器配置中包含该路径。(例如VSCode中的settings.json(

最新更新