我有一个名为parser
的包(它隐藏了一个内置模块parser
),我正在导入它:
import parser
这适用于OS X,但不适用于Windows。我已经检查了我的parser
包的__init__.py
在OS X中是否正确执行。但是,它在Windows中不起作用。这就是我在OSX:中得到的
>>> 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:WindowsSYSTEM32python34.zip
C:StuffPython34DLLs
C:StuffPython34lib
C:StuffPython34
C:StuffPython34libsite-packages
将parser
重命名为其他名称可使其在Windows中工作。这两个系统都有普通的python3设置。
目录结构如下:
main.py
parser
|--- __init__.py
这是一种正确的行为吗?为什么它没有在OS X中发生,而在Windows中发生?
为了使阴影工作,用户目录必须位于stdlib目录之前。这取决于O/S和特定的Python环境(conda?stock?enthout?等),可能会发生也可能不会发生。