有没有办法防止脚本目录添加到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] 删除。
我来说两句