python和pythonw选哪个_python.exe和pythonw.exe print(os.environ)结果之间的PATH变量的差异...

我有一个奇怪的问题:

当我执行这个:

print(os.environ)

在python.exe中,我看到一件事并且在IDLE(pythonw.exe)中另一件事,为什么?

可能这是某种缓存还是什么?

PS我的系统:Windows 7 x64和Python 3.5.1 x32

为什么你把它标记为重复,我没有找到这类问题的答案。 我读了python.exe和pythonw.exe的区别,但我不明白为什么PATH变量是不同的。

这是干扰:

python.exe:

C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Program Files\Broadcom\Broadcom 802.11 Network Adapter\Driver;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Lenovo\Bluetooth Software\;C:\Program Files\Lenovo\Bluetooth Software\syswow64;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Skype\Phone\;C:\Program Files\Git\cmd;C:\Program Files (x86)

odejs\;C:\Users\someusername\AppData\Local\Programs\ Python\Python35-32\Scripts\;C:\Users\someusername\AppData\Local\Programs\Python\Python35-32\;C:\Program Files (x86)

odejs\;C:\Users\someusername\AppData

oaming

pm

pythonw.exe:

C:\ProgramData\Oracle\Java\javapath;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\Program Files\Broadcom\Broadcom 802.11 Network Adapter\Driver;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Lenovo\Bluetooth Software\;C:\Program Files\Lenovo\Bluetooth Software\syswow64;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Skype\Phone\;C:\Program Files\Git\cmd;C:\Users\someusername\AppData\Local\Programs\Python\Python35-32\Scripts\;C:\Users\someusername\AppData\Local\Programs\Python\Python35-32\

你在python.exe结果中看到nodejs路径,而不是在pythonw.exe中看到它吗? 我删除了所有pyc文件但没有帮助

"我看到一件事[...]和另一件事"什么事情? 有许多不同的环境变量,你必须比这更具体。

@jonrsharpe虽然另一个问题涉及问题的python vs pythonw部分,但使用的可执行文件与OP正在讨论的环境变量几乎没有关系。 另外,他们对pythonw的使用仅通过IDLE,其行为与python的行为相似,使得这个问题与python vs pythonw无关。

@Xion请实际告诉我们您看到的差异,否则我们将无法解释您为什么会看到它们。

请更改问题的标题,因为它没有描述您的要求。 您的环境列表应该只显示差异。 常见项目无关紧要。 你还应该说你如何启动python.exe与你如何启动pythonw.exe(通过IDLE)。 两者都可以以各种方式启动。

PATH环境变量的值与python.exe和pythonw.exe之间的差别很小。关于PATH或一般环境变量,您需要了解的是它们通常是从调用进程继承的。

因此,当您从命令行调用python.exe时,该进程将继承命令行具有的PATH值。如果使用某个快捷方式打开IDLE,则它将从Windows继承该值。

每个进程都可以随心所欲地处理环境变量;因此影响他们开始的过程。例如:

C:\>set FOO=Hello world

C:\>py -3

Python 3.5.0 (v3.5.0:374f501f4567, Sep 13 2015, 02:27:37) [MSC v.1900 64 bit (AMD64)] on win32

Type"help","copyright","credits" or"license" for more information.

>>> import os

>>> os.environ['FOO']

'Hello world'

>>> ^Z

C:\>set FOO=Hello world foo bar baz

C:\>py -3

Python 3.5.0 (v3.5.0:374f501f4567, Sep 13 2015, 02:27:37) [MSC v.1900 64 bit (AMD64)] on win32

Type"help","copyright","credits" or"license" for more information.

>>> import os

>>> os.environ['FOO']

'Hello world foo bar baz'

就像我创建了一个新的环境变量FOO,它自动传递给我开始的进程(Python 3),它可以在那里访问它。

这同样适用于PATH环境变量。如果您在那里看到差异,可能不是因为您的可执行文件不同,而是因为调用进程可能以不同的方式影响它。

我理解PATH的用法,但pythonw.exe怎么样? 它可以获得自己的PATH var? 我需要pythonw.exe来获取带有nodejs路径的有效PATH var

毫无疑问,它是从Windows的环境设置中获得的。 但请注意,您的"pythonw.exe"示例实际上是另一个示例的子集。 Nodejs相关目录是唯一被遗漏的目录。 因此,另一种情况 -"python.exe" - 可能实际上是由这些路径增强的。 但同样:这与pythonw.exe无关。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值