Python3在Windows上忽略__init__.py,但在OS X中忽略

时间:2015-12-16 18:47:03

标签: python-3.x packages python-import

我有一个名为parser的包(它隐藏了内置模块parser),我正在导入它:

import parser

这适用于OS X,但不适用于Windows。我已经检查过我的__init__.py包的parser在OS X中是否正确执行。但是,它在Windows中不起作用。这是我在OS X中得到的:

>>> import parser, sys
>>> print(parser)
<module 'parser' from '/Users/apple/Development/tiny-py-interpreter/tinypy/parser/__init__.py'>
>>> for path in sys.path: print(path)
...
/usr/local/Cellar/python3/3.5.0/Frameworks/Python.framework/Versions/3.5/lib/python35.zip
/usr/local/Cellar/python3/3.5.0/Frameworks/Python.framework/Versions/3.5/lib/python3.5
/usr/local/Cellar/python3/3.5.0/Frameworks/Python.framework/Versions/3.5/lib/python3.5/plat-darwin
/usr/local/Cellar/python3/3.5.0/Frameworks/Python.framework/Versions/3.5/lib/python3.5/lib-dynload
/usr/local/lib/python3.5/site-packages

我在Windows中获得的内容:

>>> import parser
>>> parser
<module 'parser' (built-in)>
>>  for path in sys.path: print(path)
...
C:\Windows\SYSTEM32\python34.zip
C:\Stuff\Python34\DLLs
C:\Stuff\Python34\lib
C:\Stuff\Python34
C:\Stuff\Python34\lib\site-packages

parser重命名为其他名称可使其在Windows中正常运行。两个系统都有普通股python3设置。

目录结构如下:

main.py 
parser
|--- __init__.py

这是正确的行为吗?为什么它不会在OS X中发生,在Windows中也会发生?

1 个答案:

答案 0 :(得分:0)

为了使阴影工作,用户目录必须位于stdlib目录之前。取决于O / S和特定的Python环境(conda?stock?enthought?等),可能会也可能不会发生。