通过解释器运行文件会更改当前目录吗?

问题描述 投票:0回答:1

[当我尝试$> python ./tools/test.py时,出现导入错误,我无法导入要从其中调用python的目录中存在的模块。但是,我可以导入此模块,$> python -c "import mod"有效。

我依赖./在PYTHONPATH上(实际上)的事实。

当我在另一个目录中存在的脚本上运行解释器时,python对python路径做什么?有没有一种方法可以“锁定”当前的工作目录,以便导入工作?

我的设置:

./mod.py

x = 5     # just for demonstration purposes

./tools/test.py

from mod import x
# ... snip ... actual content

我正在从包含mod.pytools/的目录中调用python:

$> python -c "from mod import x"      # works fine
$> python tools/test.py

Traceback (most recent call last):

File "tools/test.py", line 1, in <module>
from mod import x
ModuleNotFoundError: No module named 'mod'

请注意,在我的PYTHONPATH中,包含mod.pytools的当前目录为not

python pythonpath
1个回答
1
投票

我依赖./在PYTHONPATH上(实际上)的事实。

不是。它不在PYTHONPATH上,也不在sys.path上。通过文件路径运行脚本时,将是添加到sys.path脚本的目录。您可以查看每种指定要在sys.path中运行的程序的方式添加到Python command line docs中的内容。

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