草庐IT

python - 将某些功能拆分为函数、模块和包的推荐方法?

有一点,在一个相对较大的项目中,需要考虑将功能拆分为各种功能,然后是各种模块,然后是各种包。有时跨越不同的源代码分布(例如:将通用实用程序(例如optparser)提取到单独的项目中)。问题-如何决定将哪些部分放在同一个模块中,哪些部分放在单独的模块中?包的相同问题。 最佳答案 DavidParnas有一篇经典论文,名为“Onthecriteriatobeusedindecomposingsystemsintomodules”。这是经典之作(并且有一定的年代感,所以可能有点过时)。也许你可以从那里开始,这里有PDF文件http://

python - 使用 Requests Python 包的钩子(Hook)问题

我正在使用模块requests,当我开始使用hooks时收到了这条消息。File"/Library/Python/2.7/site-packages/requests-1.1.0-py2.7.egg/requests/sessions.py",line321,inrequestresp=self.send(prep,**send_kwargs)File"/Library/Python/2.7/site-packages/requests-1.1.0-py2.7.egg/requests/sessions.py",line426,insendr=dispatch_hook('respon

python - 导入 numpy 和 Scipy 包的模块/子包的差异

我通过Anaconda2.1.0发行版使用scipy和numpy。我使用Spyder作为我的PythonIDE。运行importscipyassp时,无法通过sp.访问optimize、linalg、cluster等子包但是,当我运行importnumpyasnp时,我能够通过np.这两个导入以不同的方式工作是否有原因?为什么importscipyassp没有将所有scipy子包抓取到sp的命名空间中? 最佳答案 这种不同导入行为的可能性是python语言的设计造成的。默认情况下,模块(*)的导入语句仅导入主模块,而不导入子模块。主

python - 包的 `__all__` 的 `__init__` 中没有 Unicode?

Python2.7.5中的__all__中是否不允许使用Unicode文字?我有一个__init__.py文件,顶部有from__future__importunicode_literals,编码为utf-8。(其中还有一些unicode字符串,因此将来会导入。)为确保在使用frommypackageimport*导入时只有部分模块可见,我已将我的类添加到__all__。但是我得到TypeError:Itemin``fromlist''notastring。这是为什么?错误?但是,当我在__all__中将类名转换为str时,它工作得很好。[当我在下面的run.py中指定frommypa

python - 如何解决 lxml 中已删除的 cssselect 包的问题?

所以他们从lxml中删除了cssselect包。现在我的python程序没用了。我只是不知道如何让它工作:ImportError:cssselect似乎没有安装。参见http://packages.python.org/cssselect/我试过将cssselect目录复制到我的代码目录->解决了编译字节码文件时的错误,但是运行程序时,错误依旧。我尝试重写我的lxml.cssselect命令但没有结果。我搜索了整个互联网,但没有答案。现在我只有一行:fromlxml.htmlimportparse使用cssselect的代码是inner=html.xpath('//*[@id="Con

python - 在包的 __init__.py 中导入子模块时出现奇怪的命名空间污染

主要.py:importpackage包/__init__.py:#usefunctiontosplitlocalandglobalnamespacedefdo_import():printglobals().keys()printlocals().keys()importfooasmodprintlocals().keys()printglobals().keys()do_import()包/foo.py:print'Hellofromfoo'执行main.py会输出如下:['__builtins__','__file__','__package__','__path__','__n

python - 如何在不破坏其他包的情况下声明构建时依赖项?

我在安装依赖于python-daemon的包时遇到了问题。我最终将其追溯到昨天发布的最新版本的软件包python-daemon(2.0.3)。在Ubuntu14.04机器上的虚拟环境中进行测试并发出以下命令:(venv)$piplistargparse(1.2.1)pip(1.5.6)setuptools(3.6)wsgiref(0.1.2)(venv)$pipinstallredis...worksfine....(venv)$pipinstallpython-daemon...snip...File"/home/pwj/.virtualenvs/venv/local/lib/pyt

Python:如果安装了同一个包的多个 egg 版本,我该如何具体导入我需要的版本?

例如,FooPackage-1.1和FooPackage-1.2都作为egg安装在dist-packages中。如何导入我需要的? 最佳答案 您可以使用pkg_resources在导入时指定您的要求:importpkg_resourcespkg_resources.require('FooPackage==1.2')importFooPackage例如:%easy_installsimplejson==2.1.3%easy_installsimplejson==2.1.2pkg_resources.require('simplejs

python - 在python中使用 'multiprocessing'包的最佳实践

我正在尝试使用multiprocessing模块在python.我有以下示例代码,它在ipython笔记本中执行时没有任何错误。但是我看到每次执行笔记本中的代码块时,都会在后台产生额外的python进程。importmultiprocessingasmpdeff(x):print"HelloWorld",mp.current_process()return1pool=mp.Pool(3)data=range(0,10)pool.map(f,data)而当我将相同的内容保存在普通的.py文件中并执行时,我遇到了错误并且必须终止终端以停止执行程序。我通过if__name__=='__mai