我在这个有用的问答中看到,可以使用reload(whatever_module)或者在Python 3中使用imp.reload(whatever_module) 。 我的问题是,如果我from whatever_module import *中导入了什么呢? 然后,我没有whatever_module来引用当我使用reload() 。 你们会因为把整个模块扔到全局命名空间而嚷嚷吗? 🙂
我认为把导入语句放在使用它的片段附近,使得它的依赖关系更加清晰,从而有助于可读性。 Python会caching吗? 我应该在乎吗? 这是一个坏主意吗? def Process(): import StringIO file_handle=StringIO.StringIO('hello world') #do more stuff for i in xrange(10): Process() 更多的理由:这是使用库的神秘的方法,但是当我重构方法到另一个文件,我没有意识到我错过了外部依赖,直到我得到一个运行时错误。
在Python中,是否有类似于C预处理器语句的模拟? #define MY_CONSTANT 50 另外,我有一大串常量,我想导入到几个类。 有没有类似于在.py文件中将常量声明为如上所述的长序列语句并将其导入到另一个.py文件? 编辑。 Constants.py文件显示如下: #!/usr/bin/env python # encoding: utf-8 """ Constants.py """ MY_CONSTANT_ONE = 50 MY_CONSTANT_TWO = 51 和myExample.py读取: #!/usr/bin/env python # encoding: utf-8 """ myExample.py """ import sys import os import Constants class myExample: def __init__(self): self.someValueOne = Constants.MY_CONSTANT_ONE + 1 self.someValueTwo = Constants.MY_CONSTANT_TWO + 1 if __name__ == '__main__': […]
让我们考虑python(3.x)脚本: main.py: from test.team import team from test.user import user if __name__ == '__main__': u = user() t = team() u.setTeam(t) t.setLeader(u) testing/ user.py: from test.team import team class user: def setTeam(self, t): if issubclass(t, team.__class__): self.team = t testing/ team.py: from test.user import user class team: def setLeader(self, u): if issubclass(u, user.__class__): self.leader = […]
我试图让matplotlib在OS X 10.8.4上运行。 我已经安装了matplotlib和依赖(libping,freetype,numpy,scipy)。 我能够导入matplotlib就好了。 但是,如果我尝试导入matplotlib.pyplot,它只是挂起。 没有错误,只是没有任何反应。 >>> import matplotlib.pyplot 我等了20分钟,什么也没有发生。 我正在使用1.2.1版本,但即使卸载,并尝试版本1.2.0,但无济于事。 我已经看到了关于matplotlib.pyplot导入错误的一些问题,但没有任何地方挂起。 然后我尝试使用Enthought / Canopy python发行版来工作,但同样是悬而未决的问题。 这是我看到如果我杀了导入: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Applications/Canopy.app/appdata/canopy-1.0.3.1262.macosx-x86_64/Canopy.app/Contents/lib/python2.7/site-packages/matplotlib/pyplot.py", line 26, in <module> from matplotlib.figure import Figure, figaspect File "/Applications/Canopy.app/appdata/canopy-1.0.3.1262.macosx-x86_64/Canopy.app/Contents/lib/python2.7/site-packages/matplotlib/figure.py", line 34, in <module> import matplotlib.colorbar as cbar File "/Applications/Canopy.app/appdata/canopy-1.0.3.1262.macosx-x86_64/Canopy.app/Contents/lib/python2.7/site-packages/matplotlib/colorbar.py", line 29, in […]
当使用带有虚线名称的somepackage.somemodule ,如: somepackage.somemodule ,返回的模块不是somemodule ,无论返回什么似乎都是空的! 这里发生了什么?
我有一个充满脚本的目录(比如说project/bin )。 我也有一个库位于project/lib并希望脚本自动加载它。 这是我通常在每个脚本的顶部使用的: #!/usr/bin/python from os.path import dirname, realpath, sep, pardir import sys sys.path.append(dirname(realpath(__file__)) + sep + pardir + sep + "lib") # … now the real code import mylib 这是一种麻烦,丑陋,必须粘贴在每个文件的开始。 有一个更好的方法吗? 真的,我所希望的是这样的顺利: #!/usr/bin/python import sys.path from os.path import pardir, sep sys.path.append_relative(pardir + sep + "lib") import mylib 或者甚至更好的是,当我的编辑(或其他提供访问权限的人)决定重新排列input作为其清理过程的一部分时, #!/usr/bin/python –relpath_append ../lib import mylib […]
假设我有一个相对较长的模块,但只需要一个外部模块或方法一次。 在模块中间导入该方法或模块是否被认为是正确的? 或者应该只import模块的第一部分。 例: import string, pythis, pythat … … … … def func(): blah blah blah from pysomething import foo foo() etc etc etc … … … 请certificate您的答案,并添加PEP或相关来源的链接
所以我正在尝试使用unittest.mock来模拟我的unit testing中的一些方法。 我做: from unittest.mock import MagicMock f = open("data/static/mock_ffprobe_response") subprocess.check_output = MagicMock(return_value=f.read()) f.close() 但是我得到: ImportError: No module named mock 我试过了: pip install mock 它仍然没有工作。
我可能错过了一些明显的东西,但无论如何: 当你在python中导入一个像os这样的包的时候,你可以使用任何子模块/子包。 例如这个工程: >>> import os >>> os.path.abspath(…) 不过,我有我自己的软件包,其结构如下: FooPackage/ __init__.py foo.py 这里同样的逻辑不起作用: >>> import FooPackage >>> FooPackage.foo AttributeError: 'module' object has no attribute 'foo' 我究竟做错了什么?