我有一个关于向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
)。我可以在bash中包含调用.py
的命令,但它的灵活性远不及从终端直接调用它。
真的想听听一些建议!提前致谢。任何建议将不胜感激!
答案 0 :(得分:3)
在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来进一步简化设置。
答案 1 :(得分:-1)
这不是一个特别好的做法,尽管您可以摆脱它。最好还是使用virtualenv(或pipenv),以使工作流程更流畅。