将项目根目录添加到 sys.path 是一个好习惯吗?
Is adding project root directory to sys.path a good practice?
我有一个关于将项目路径添加到 python 以促进 import
工作的问题。
情况
当我在 Python 中编写代码时,我通常使用
添加到 sys.path
的必要路径
import sys
sys.path.append("/path/to/dir/") # almost every `.py` need this
有时,当我的项目变得越来越大,有很多级别的目录时,这种方法看起来很笨重而且容易出错(尤其是当我重新组织我的文件时)
最近,我开始使用 bash 脚本(位于项目根目录),将带有项目根参数的 sys.path.append
添加到项目中的 .py
文件。使用这种方法,我几乎不必手动关心导入模块。
问题
我的问题是:这是一种好的做法吗?与我的旧方法相比,我发现它对我自己很方便,但是由于 bash 脚本是一个单独的文件,我需要 2 个命令来 运行 我项目中的任何脚本(一个用于 bash 和一个 .py
)。我可以将调用 .py
的命令包含到 bash,但它远不如直接从终端调用它灵活。
很想听听大家的意见!提前致谢。任何建议将不胜感激!
这不是一个特别好的做法,尽管您可以摆脱它。最好查看 virtualenv(或 pipenv)以获得更流畅的工作流程。
在 python 库或程序中使用操作 sys.path
通常不是好的做法。您应该在 python 程序的调用环境中将相关路径添加到 PYTHONPATH
:
PYTHONPATH="/path/to/other/projects/directory:$PYTHONPATH" python ...
或
export PYTHONPATH="/path/to/other/projects/directory:$PYTHONPATH"
python ...
这使您可以轻松地操纵您的程序或库将轻松搜索依赖项的路径,而无需修改您的代码。
在您的个人开发环境中通过修改您的 bashrc
或在您的 init
脚本(或其他包装脚本)中的生产环境中管理它也非常容易,并为您提供了一个每次添加或修改项目路径时更新的地方。
鉴于您提到每个 .py
文件几乎有一个目录,您还应该考虑如何将代码组织到 packages 中以进一步简化设置。
我有一个关于将项目路径添加到 python 以促进 import
工作的问题。
情况
当我在 Python 中编写代码时,我通常使用
添加到sys.path
的必要路径
import sys
sys.path.append("/path/to/dir/") # almost every `.py` need this
有时,当我的项目变得越来越大,有很多级别的目录时,这种方法看起来很笨重而且容易出错(尤其是当我重新组织我的文件时)
最近,我开始使用 bash 脚本(位于项目根目录),将带有项目根参数的 sys.path.append
添加到项目中的 .py
文件。使用这种方法,我几乎不必手动关心导入模块。
问题
我的问题是:这是一种好的做法吗?与我的旧方法相比,我发现它对我自己很方便,但是由于 bash 脚本是一个单独的文件,我需要 2 个命令来 运行 我项目中的任何脚本(一个用于 bash 和一个 .py
)。我可以将调用 .py
的命令包含到 bash,但它远不如直接从终端调用它灵活。
很想听听大家的意见!提前致谢。任何建议将不胜感激!
这不是一个特别好的做法,尽管您可以摆脱它。最好查看 virtualenv(或 pipenv)以获得更流畅的工作流程。
在 python 库或程序中使用操作 sys.path
通常不是好的做法。您应该在 python 程序的调用环境中将相关路径添加到 PYTHONPATH
:
PYTHONPATH="/path/to/other/projects/directory:$PYTHONPATH" python ...
或
export PYTHONPATH="/path/to/other/projects/directory:$PYTHONPATH"
python ...
这使您可以轻松地操纵您的程序或库将轻松搜索依赖项的路径,而无需修改您的代码。
在您的个人开发环境中通过修改您的 bashrc
或在您的 init
脚本(或其他包装脚本)中的生产环境中管理它也非常容易,并为您提供了一个每次添加或修改项目路径时更新的地方。
鉴于您提到每个 .py
文件几乎有一个目录,您还应该考虑如何将代码组织到 packages 中以进一步简化设置。