相关疑难解决方法(0)

Python 3中的包不需要__init__.py吗?

我使用的是Python 3.5.1.我在这里阅读了文档和包部分:https://docs.python.org/3/tutorial/modules.html#packages

现在,我有以下结构:

/home/wujek/Playground/a/b/module.py
Run Code Online (Sandbox Code Playgroud)

module.py:

class Foo:
    def __init__(self):
        print('initializing Foo')
Run Code Online (Sandbox Code Playgroud)

现在,在/home/wujek/Playground:

~/Playground $ python3
>>> import a.b.module
>>> a.b.module.Foo()
initializing Foo
<a.b.module.Foo object at 0x100a8f0b8>
Run Code Online (Sandbox Code Playgroud)

同样,现在在家里,超级文件夹Playground:

~ $ PYTHONPATH=Playground python3
>>> import a.b.module
>>> a.b.module.Foo()
initializing Foo
<a.b.module.Foo object at 0x10a5fee10>
Run Code Online (Sandbox Code Playgroud)

实际上,我可以做各种各样的事情:

~ $ PYTHONPATH=Playground python3
>>> import a
>>> import a.b
>>> import Playground.a.b
Run Code Online (Sandbox Code Playgroud)

为什么这样做?我虽然有被需要的__init__.py文件(空的都可以)两种a,并bmodule.py要导入的时候Python的路径指向Playground文件夹?

这似乎已经从Python 2.7改变了:

~ $ PYTHONPATH=Playground …
Run Code Online (Sandbox Code Playgroud)

python package python-3.x

146
推荐指数
5
解决办法
6万
查看次数

从一级目录(包)导入模块

Python从一级目录导入模块的正确方法是什么?该目录是一个包含所有这些模块的Python包,我有一个子目录,其中包含需要这些模块的代码.

以下工作正常,但这只是一个黑客.我想要推荐/ pythonic方式.

import sys
sys.path.append("../")
from fruit import Fruit
print("OK")
Run Code Online (Sandbox Code Playgroud)

目录结构:

pkg1
   __init__.py  
   fruit.py  
   +sub_pkg
      __init__.py
      recipe.py
Run Code Online (Sandbox Code Playgroud)

fruit.py的内容

class Fruit:
   def get_name(self):
       print("Fruit name")
Run Code Online (Sandbox Code Playgroud)

sub_pkg/recipe.py..的内容只是一个导入行:

from fruit import Fruit
Run Code Online (Sandbox Code Playgroud)

当我跑:

python recipe.py
Run Code Online (Sandbox Code Playgroud)

它给出了以下错误.

Traceback (most recent call last):
  File "recipe.py", line 2, in <module>
    from fruit import Fruit
ImportError: No module named fruit
Run Code Online (Sandbox Code Playgroud)

我也试过:from pkg1.fruit import Fruit,不行.还看了其他类似的问题.. python -m recipe.pypython -m sub_pkg/recipe.py没有奏效.

python

8
推荐指数
1
解决办法
9834
查看次数

标签 统计

python ×2

package ×1

python-3.x ×1