Python sys.path和os.getcwd()不一致?

Python sys.path和os.getcwd()不一致?,python,python-3.x,path,sys,Python,Python 3.x,Path,Sys,我在当前目录下有一个名为sub/code.py的python脚本。sub目录有其他脚本和一个\uuuu init\uuuu.py,因此它充当一个包 从我的当前目录: python -i sub/code.py >>> import sys >>> sys.path[0] '/home/name/folder/current_directory/sub' >>> import os >>> os.getcwd() '/home

我在当前目录下有一个名为
sub/code.py
的python脚本。
sub
目录有其他脚本和一个
\uuuu init\uuuu.py
,因此它充当一个包

从我的当前目录:

python -i sub/code.py
>>> import sys
>>> sys.path[0]
'/home/name/folder/current_directory/sub'
>>> import os
>>> os.getcwd()
'/home/name/folder/current_directory'
>>> 

os.getcwd()
sys.path[0]
是否应该以这种方式不一致?据我所知,它们都应该引用当前目录,但在本例中只有
os.getcwd()
引用。

根据我的经验,
sys.path[0]
是一个空字符串,其计算结果为当前目录


也许您的
子模块中有操作
系统路径的代码

这并不能真正回答OP的问题

我体验到Mac OSX上的
os.getcwd()
的行为与它在php中的行为不同

test_getcwd.py:

from os import getcwd
print (getcwd())
输出当前用户路径,而不是运行脚本的路径:

Michaels-MacBook-Air:~ michag$ python3 /Users/michag/Documents/aaa_raspbian/ddpos_ddpi_3/boot/test_getcwd.py
/Users/michag

其中/Users/michag等于~,这显然是相同的。

假设您所在的目录
/
包含子目录
d
,并且目录
d
有一个python文件
f.py

import os
import sys

print(f'sys.path[0]: {sys.path[0]}')
print(f'os.getcwd(): {os.getcwd()}')
然后
python./d/f.py
将输出:

sys.path[0]: /d
os.getcwd(): /
sys.path[0]: /d
os.getcwd(): /d
如果将目录更改为
/d
(带cd/d),则
python./f.y
将输出:

sys.path[0]: /d
os.getcwd(): /
sys.path[0]: /d
os.getcwd(): /d
从这些结果(在使用python 3.8的Linux Unbuntu上)可以看出:

  • os.getcwd()
    输出命令所在的目录 执行和
  • sys.path[0]
    输出您执行的文件所在的目录

注意:两个路径似乎都是绝对路径(也称为完整路径)。

绝对不是,
sys
甚至没有导入。