我正在使用Python
3.5.1。我在这里阅读了文档和包部分:https
:
//docs.python.org/3/tutorial/modules.html#packages
现在,我具有以下结构:
/home/wujek/Playground/a/b/module.py
module.py
:
class Foo:
def __init__(self):
print('initializing Foo')
现在,在/home/wujek/Playground
:
~/Playground $ python3
>>> import a.b.module
>>> a.b.module.Foo()
initializing Foo
<a.b.module.Foo object at 0x100a8f0b8>
同样,现在在家里,超级文件夹Playground
:
~ $ PYTHONPATH=Playground python3
>>> import a.b.module
>>> a.b.module.Foo()
initializing Foo
<a.b.module.Foo object at 0x10a5fee10>
实际上,我可以做各种事情:
~ $ PYTHONPATH=Playground python3
>>> import a
>>> import a.b
>>> import Playground.a.b
为什么这样做?我虽然有被需要的__init__.py
文件(空的都可以)两种a
,并b
为module.py
要导入的时候Python的路径指向Playground
文件夹?
这似乎与Python 2.7有所不同:
~ $ PYTHONPATH=Playground python
>>> import a
ImportError: No module named a
>>> import a.b
ImportError: No module named a.b
>>> import a.b.module
ImportError: No module named a.b.module
随着__init__.py
在这两个~/Playground/a
和~/Playground/a/b
它工作正常。
Python
3.3+具有隐式命名空间包,允许它创建不带__init__.py
文件的包。
允许隐式命名空间包意味着 可以完全放弃 提供
__init__.py
文件的要求,并 使其 受到影响。
使用__init__.py
文件的旧方法仍然可以在Python 2中使用。
我正在使用Python 3.5.1。我在这里阅读了文件和文件包部分:https://docs.python.org/3/tutorial/modules.html#packages 现在,我有以下结构: : 现在,在: 同样,现在在家里,: 事实上,我可以做各种各样的事情: 为什么这行得通?我认为需要有文件(空的可以工作)在两个和中,当Python路径指向文件夹? 这似乎与Python 2.7有所
最近我创建了一个flask应用程序,并决定在应用程序文件夹外添加一个测试文件夹(应用程序文件夹和测试文件夹都在同一个目录中)。我要测试的所有实现都包含在app文件夹中创建的包和模块中。 在两个文件夹中都有_init__u; py.py文件,正如预期的那样工作正常。但是,当我从测试文件夹中删除_uinit__uuu.py文件时,我开始体验moduleImportError。PythonDoc说,Py
init.py
init.py 指定导入该包时,仅导入 Client 类,代码如下: __all__ = ['Client'] from heatclient.v1.client import Client
问题内容: 我在理解项目中python文件的使用场景或设计目标时遇到了困难。 假设我有“模型”目录(称为包),其中包含以下文件 我发现了两种使用方法: 我有需要使用一个共同的定义,,。我可以用作所有* model.py类的基础/通用定义吗?这意味着我必须导入。 或者,应当具有自己导入的solrmodel.py,mongomodel.py,samodel.py的定义,并且它允许像这样的类或函数的轻松
问题内容: 我的软件包具有以下结构: 我不确定应如何正确写入文件。 的样子: 但是例如应该看起来如何?我的是: 什么时候应该使用? 问题答案: 很好-它有助于指导导入语句,而无需自动导入模块 http://docs.python.org/tutorial/modules.html#importing-from-a- package 使用和是多余的,仅需要 我认为在导入软件包中使用的最强大的理由之一