python module empty after import
在尝试以不同的方式导入名为rmod2的Python模块时,我注意到一些看似奇怪的行为。如果我从rmod2.py文件所在的目录启动python,它就可以正常工作。但是,如果我将文件移动到其他模块所在的另一个文件夹中,它将不再按预期工作。module/package文件夹是/usr/lib/pymodules/python2.7,它也包含在sys.path中。所以我创建了/usr/lib/pymodules/python2.7/rmod2文件夹,并在其中放置了一个空的init和rmod2.py。如果我没有初始版本,我会得到:
1 2 3 4 | >>> import rmod2 Traceback (most recent call last): File"<stdin>", line 1, in <module> ImportError: No module named rmod2 |
对于uuu init_uuuy文件,导入似乎可以工作,但包是空的:
1 2 3 4 5 6 7 8 9 | >>> import rmod2 >>> dir() ['__builtins__', '__doc__', '__name__', '__package__', 'rmod2'] >>> dir(rmod2) ['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__'] >>> rmod2.__path__ ['/usr/lib/pymodules/python2.7/rmod2'] >>> rmod2.__file__ '/usr/lib/pymodules/python2.7/rmod2/__init__.py' |
有人能告诉我发生了什么,以及如何修复它,以便在导入时实际加载模块内容吗?
您要将模块所在目录的路径添加到您的
通过将
1 | from rmod2 import rmod2 |
有一次我偶然发现一个包的模块不能从包中访问,但是当直接导入时,它就工作了。包的
这不起作用:
1 2 | import mypkg obj = mypkg.mymodule.MyClass() |
这起作用了:
1 2 | import mypkg.mymodule obj = mypkg.mymodule.MyClass() |