指向文件位置时,在代码中使用sys.path[0]是否安全



我的公司有一些python代码在一些文件路径中使用sys.path[0]。一般来说,每个人的系统路径[0]都指向c:\<user.name>\workspace,我相信我的系统路径也曾经指向过。然而,现在我的系统路径[0]是c:\users\<user.name>\repos\venv\lib\site-packages\git\ext\gitdb,所以很明显,这些路径在我的本地上是不正确的,并导致错误。

我的问题是,是什么原因导致我的本地sys.path发生更改,以及由于这种情况而使用sys.path是否是一种糟糕的做法。在这种情况下,我们应该使用什么?

这都是针对在flask服务器上运行的python代码。

这是不安全的,因为正如它在评论中所说,很多事情都可以修改sys.path的顺序。

作为一种变通方法,您可以在workspace中导入一些文件,然后获得目录:

import something_in_workspace
workspace = os.path.dirname(something_in_workspace.__file__)

通常需要它来检索数据文件。最好是打包您的项目并使用importlib.resources。请参阅如何从Python包中读取(静态)文件?

最新更新