相关疑难解决方法(0)

使用'导入模块'或'从模块导入'?

我试图找到一个关于是否最好使用的综合指南import modulefrom module import?我刚刚开始使用Python,我试图从最初的实践开始.

基本上,我希望如果有人能分享他们的经验,有什么喜好其他开发商,什么是避免任何的最好办法陷阱的道路?

python python-import

370
推荐指数
12
解决办法
13万
查看次数

Python条件'模块对象没有属性'错误,个人包与循环导入问题不同

当我尝试使用我创建的包heirarchy时,我得到一个'模块对象没有属性...'错误.错误是当你有一个循环导入时得到的错误(即模块a导入b和模块b)进口a),但我在这里看不到这个问题.我经历过很多类似错误的帖子,但我看到的解释都不合适.

这可以在python 2.7.1和python 2.4.3中看到.

我把它浇灌到下面的例子中:

考虑下面的heirarchy(见下面的代码):

alpha
alpha/__init__.py
alpha/bravo
alpha/bravo/__init__.py
alpha/bravo/charlie.py
alpha/bravo/delta.py
alpha/bravo/echo.py
Run Code Online (Sandbox Code Playgroud)

模块charlie导入echo,而echo又导入delta.如果alpha/bravo/__ init__.py(如alpha/__ init__.py)基本上是空白的,则脚本可以执行以下操作:

import alpha.bravo.charlie
Run Code Online (Sandbox Code Playgroud)

如果我尝试在alpha/bravo/__ init__.py中导入alpha.bravo.charlie(我认为我可以在那里展示相关的类/方法,并且脚本会执行'import alpha.bravo'),问题就会出现.

码:

阿尔法/ __ init__.py

(blank)
Run Code Online (Sandbox Code Playgroud)

字母/喝彩/ __ init__.py

import alpha.bravo.charlie
Run Code Online (Sandbox Code Playgroud)

字母/喝彩/ charlie.py

import alpha.bravo.echo
def charlie_foo(x): return str(x)
def charlie_bar(x): return alpha.bravo.echo.echo_biz()
Run Code Online (Sandbox Code Playgroud)

字母/喝彩/ delta.py

def delta_foo(x): return str(x)
Run Code Online (Sandbox Code Playgroud)

字母/喝彩/ echo.py

import alpha.bravo.delta
print alpha.bravo.delta.delta_foo(1)
def echo_biz(): return 'blah'
Run Code Online (Sandbox Code Playgroud)

如果我尝试:

python -c 'import alpha.bravo'
Run Code Online (Sandbox Code Playgroud)

我明白了:

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/kmkc980/svn/working/azcif/python/lib/alpha/bravo/__init__.py", line 1, …
Run Code Online (Sandbox Code Playgroud)

python python-import

13
推荐指数
1
解决办法
1万
查看次数

在python中,导入类与导入类模块的优缺点是什么?

我正在为一个约30名开发人员的团队编写一套python编码指南.作为我的文档的基础,到目前为止,我已经研究了谷歌python风格指南PEP 8风格指南,并结合了两者的信息.

谷歌风格指南比PEP 8更具限制性的地方是进口.Google指南要求开发人员仅导入包和模块,然后通过更合格的名称引用其中的项目.例如:

from pkg import module
...
my_class = module.MyClass()
Run Code Online (Sandbox Code Playgroud)

理由是"每个标识符的来源以一致的方式表示".对于我们的项目,我们打算使用两个或三个级别的包进行组织,因此要了解标识符的完整来源,读者可能还需要检查import语句.我想提倡这种导入方式作为"首选风格":

from pkg.module import MyClass
...
my_class = MyClass()
Run Code Online (Sandbox Code Playgroud)

恕我直言,当名称更简洁时,改进了列表推导等python结构中的可读性.

我不清楚的是python解释器可能在幕后做什么.例如,MyClass现在是该模块的全局命名空间的一部分,还是该模块的所有导入器?(这会很糟糕,可能会导致一些奇怪的错误;​​如果这是真的,我会提倡谷歌风格).

我的python开发经验仅限于6个月(我们的项目专家咨询的人数不多),所以我希望从社区获得更多信息.以下是我已经研究过的一些项目:

effbot - 关于进口的讨论

堆栈溢出 - 导入与导入

python文档 - 模块

python文档 - 导入

谢谢您的反馈!

python import

6
推荐指数
1
解决办法
855
查看次数

有没有办法加快进口?

我有一个需要的CLI应用程序sympy.CLI应用程序的速度很重要 - 它在用户反馈循环中使用了很多.

但是,简单地做import sympy 一整秒.这在紧密的反馈循环中变得异常烦人.无论如何在没有更改模块的情况下再次运行脚本时"预加载"或优化模块?

python performance module

6
推荐指数
1
解决办法
2559
查看次数

递归导入:'import'与'from ... import ...'

我有两个文件需要使用彼此不同的功能.

file1.py:

import file2   # from file2 import y2

def x1():
    print "x1"

def x2():
    print "x2"
    file2.y2()
Run Code Online (Sandbox Code Playgroud)

file2.py:

import file1   # from file1 import x1

def y1():
    file1.x1()
    print "y"

def y2():
    print "y2"

if __name__ == "__main__":
    y1()
Run Code Online (Sandbox Code Playgroud)

我想知道为什么使用import file1工作,但从file1(from file1 import x1)导入只是特定的功能不是?

Traceback (most recent call last):
  File "file2.py", line 1, in <module>
    from file1 import x1
  File "file1.py", line 1, in <module>
    import file2
  File "file2.py", line 1, in <module> …
Run Code Online (Sandbox Code Playgroud)

python python-import

5
推荐指数
1
解决办法
2466
查看次数

如何理解。导入python吗?

我是python和flask框架的新手。

对于以下代码:

from flask import Blueprint
main = Blueprint('main', __name__)
from . import views, errors
Run Code Online (Sandbox Code Playgroud)

我发现python有很多导入方式,例如:

import foo
import foo.bar
from foo import bar
from foo import bar, baz
from foo import *
from foo import bar as fizz
Run Code Online (Sandbox Code Playgroud)

但是如何理解from . import ...

python flask

4
推荐指数
1
解决办法
2006
查看次数

我不理解Python中的'from'

可能重复:
'import module'或'from module
from &hellip; importimport'vsimport .

from glob import glob
from os.path import isfile
def countwords(fp):
   with open(fp) as fh:
       return len(fh.read().split())

print "There are" ,sum(map(countwords, filter(isfile, glob("*.txt") ) ) ), "words in the files."
Run Code Online (Sandbox Code Playgroud)

在第一行,为什么不只是简单地导入glob库?

有没有理由在"import glob"前面使用"from glob"?

python glob

2
推荐指数
1
解决办法
3514
查看次数

Python:导入导入模块的模块

所以在文件foo我导入模块:

import lib.helper_functions
import lib.config
Run Code Online (Sandbox Code Playgroud)

在helper_functions.py中,我有:

import config
Run Code Online (Sandbox Code Playgroud)

当我运行foo的main函数时,我得到一个ImportError

编辑:这是我的文件的结构

foo.py
lib/
    config.py
    helper_functions.py
Run Code Online (Sandbox Code Playgroud)

在helper_functions中导入配置会导致错误

Traceback (most recent call last):
  File "C:\Python33\foo.py", line 1, in <module>
    import lib.helper_functions
  File "C:\Python33\lib\helper_functions.py", line 1, in <module>
    import config
ImportError: No module named 'config'
Run Code Online (Sandbox Code Playgroud)

所以:当我运行foo.py时,解释器会抱怨helper_functions的import语句.然而,当我运行helper_functions的主要部分时,不会出现这样的错误.

python python-import

2
推荐指数
1
解决办法
2万
查看次数

'.' 有什么用?在 python 导入语句中

from math import floor和 和有import math.floor什么区别?

from math import floor - 完美运行。

import math.floor - 不起作用。

我假设它.用于引用文件而floor不是文件,它只是math?

python python-import python-3.x

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

标签 统计

python ×9

python-import ×5

flask ×1

glob ×1

import ×1

module ×1

performance ×1

python-3.x ×1