我有一个名为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中也会发生?
答案 0 :(得分:0)
为了使阴影工作,用户目录必须位于stdlib目录之前。取决于O / S和特定的Python环境(conda?stock?enthought?等),可能会也可能不会发生。