防止将脚本目录添加到Python 3中的sys.path

fo_x86

有没有办法防止脚本目录添加到python3中的sys.path中?由于导入在python中是相对的,因此出现导入冲突。我正在使用的旧项目logger.py在脚本的根目录中有一个与内置冲突的文件logger

我使用的定制构建系统最终会创建到所有文件和依赖项的符号链接,并且在生产中,在运行时,我们使用该-E标志忽略任何系统集PYTHONPATH,并将路径设置为所需的路径。但是由于这种冲突,无法从PyCharm运行测试/脚本。

热心

在脚本的顶部,您可以尝试执行以下操作:

import os
import sys

# the first element of sys.path is an empty string, meant to represent the current directory
sys.path.remove('')

然后进行正常的进口。

当心,这将导致从当前目录的所有相对导入均失败,从而可能导致比您的遗留问题更多的问题logger.py

关于第二个问题,是否可以做任何事情来防止将目录添加到sys.path第一位,简短的回答是“否”。来自“模块搜索路径”上Python 3文档

sys.path从以下位置初始化:

  • 包含输入脚本的目录(如果未指定文件,则为当前目录)。
  • PYTHONPATH(目录名称列表,语法与shell变量PATH相同)。
  • 取决于安装的默认值。


我想您可以建立一个从当前工作目录到另一个目录的符号链接,在其中保留实际脚本,然后将符号链接指向它。同样来自上述文档(重点是我的):

在其上支持符号链接的文件系统中,计算包含输入脚本的目录的符号链接之后。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用pathlib将目录添加到sys.path

将目录添加到sys.path / PYTHONPATH

使用pip安装时将python脚本添加到PATH环境变量中

将项目根目录添加到sys.path是一种好习惯吗?

将目录添加到所有类似PATH的变量中

将目录添加到$ PATH中,而无需重复自己的操作

如何使用 Python 将任何目录添加到 PATH?

Python 將 windowsPath 添加到 sys.path

将当前目录添加到PATH

提示:将目录添加到PATH

如何将GOPATH中第一个目录的bin子目录添加到PATH?

在Google App Engine中创建一个lib目录并将其添加到sys.path

Python:相对于当前正在运行的脚本添加到sys.path的最佳方法

Python:相对于当前正在运行的脚本添加到sys.path的最佳方法

将 JS 库添加到 Dockerfile 中的 PATH

采购Anaconda激活脚本与将Anaconda bin目录添加到PATH

如何将某个目录中的单个可执行文件添加到 PATH 环境变量?

ModuleNotFoundError:即使在入侵sys.path()之后,也没有在python 3中命名模块

在 Windows 中通过 Python 添加到 PATH

无法将 python 添加到 PATH

由于PATH中已经存在C:\ Program Files(x86),因此将目录添加到PATH有条件地失败

如何将变量添加到python中的目录

PyCharm没有将源根添加到`sys.path`

将路径添加到sys.path与PEP E402

将目录添加到PATH-Ubuntu

将目录添加到PATH是什么意思?

将路径添加到$ PATH(如果尚未在$ PATH中)

Python错误:即使将目录添加到PATH之后,也找不到模块

在Python中将文件路径永久添加到sys.path