为什么sys.path不包含cwd()?

问题描述 投票:4回答:3

我在Linux OS下将python3与emacs(编辑器和shell)一起使用。为什么cwd不在sys.path中?在所有课程中,我们该怎么说呢!我谢谢你。

python linux shell emacs
3个回答
6
投票

您做不是想要将cwd()添加到sys.path总是添加cwd()将是一个[[糟糕的主意,因为您无法再控制哪些文件可用于导入。

Python添加

正在执行的脚本目录

例如当您运行时:

python.exe path/to/script.py

然后path/to自动添加到sys.path

仅当从当前目录运行脚本时,才会将''添加到路径的开头,这意味着将在当前工作目录中搜索导入。例如。当您运行python.exe localfile.py时,Python确实会添加当前工作目录,假设您在导入时不会更改当前工作目录。

请参见

命令行和环境

文档中的Interface options
如果脚本名称直接指向Python文件,则包含该文件的目录将添加到sys.path的开头,并且该文件将作为__main__模块执行。

sys.path documentation

在程序启动时初始化,此列表的第一项sys.path是包含用于调用Python解释器的脚本的目录。如果脚本目录不可用(例如,以交互方式调用解释器或从标准输入中读取脚本),则path[0]为空字符串,它会引导Python首先搜索当前目录中的模块。注意,由于path[0]的结果,在插入条目之前插入了脚本目录。

您总是可以将当前工作目录显式添加到PYTHONPATH

sys.path

请注意,该工作目录中任何名称与您在代码中已使用的模块匹配的python文件或软件包都将屏蔽该模块,很容易导致损坏。

1
投票
import sys if sys.path[0] != '': sys.path.insert(0, '')

0
投票
您可以更改sys.path环境变量。这会将位置添加到默认模块搜索路径。python说,从命令行运行脚本时,import中的第一项将是脚本的路径。文档说PYTHONPATH是“从环境变量PYTHONPATH初始化,再加上与安装有关的默认值。”例如,如果PYTHONPATH为空(PowerShell:docs),仅添加依赖于安装的默认值。

但是

© www.soinside.com 2019 - 2024. All rights reserved.