标签: python-import

使用模块中的异常而不显式导入它

我有一个实用程序模块utils.py,它使用请求来执行一些任务。在客户端代码(使用utils)中,我需要处理 引发的异常requests,但我想避免requests隐式导入(即在客户端中)。我怎样才能做到这一点?

utils.py是(简化)

 import requests

 def download(url):
     # stuff
     return requests.get(url)
Run Code Online (Sandbox Code Playgroud)

我希望client.py是这样的

 import utils  # <-- no "import requests"

 try:
      utils.download(whatever)
 except HTTPError:  # <-- not "requests.exceptions.HTTPError"
      do stuff
Run Code Online (Sandbox Code Playgroud)

except utils.something也会起作用的。该名称不需要是全局的。我想要的只是避免requests在客户的任何地方提及。

对于那些想知道的人来说,这只是一个关注点分离的问题。client.py不应该关心具体utils.download是如何实现的以及它使用的底层较低级别的库。

python package python-import python-2.7

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

通过字符串调用外部模块中的Python函数

我有一个手动维护的 python 函数和模块列表,将由遗传算法使用,我希望能够重复调用这些函数和模块并监视结果。

测试执行.py

import os
from random import randint

def main():
    toolList = [{'file':'test1.py', 'function':'sum_even_numbers', 'args':['list'], 'return':['int']},
                {'file':'test1.py', 'function':'get_min_even_num', 'args':['list'], 'return':['int']}   ]
    for tool in toolList:
        for i in range(0,3):
            run(tool, [randint(10,99) for j in range(1,randint(2,5))])

def run(tool, args):
    mod = __import__( os.path.basename(tool['file']).split('.')[0])
    func = getattr(mod, tool['function'])
    tool['return'] = func(args)
    print('main called ' + tool['file'] + '->' + tool['function'] + ' with ', args, ' = ', tool['return'])

main()
Run Code Online (Sandbox Code Playgroud)

测试1.py

def sum_even_numbers(numbers):
    return sum([i for i in numbers if …
Run Code Online (Sandbox Code Playgroud)

python genetic-programming python-import

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

如何在大 Flask-Restful API 中访问 api.url_for

我正在使用 Flask-Restful 开发 Restful API,其资源比我想在 app.py 中保留的资源多。所以我应用了建议的项目结构。现在我想从资源访问api.url_for()from app import api以生成一些链接,但似乎我必须这样做。

为了避免循环导入,我当前的解决方案是进行惰性导入。但还有更好的方法,对吗?

app.py:

from flask import Flask
from flask_restful import Api
from myapi.resources.foo import Foo
from myapi.resources.bar import Bar
from myapi.resources.baz import Baz

app = Flask(__name__)
api = Api(app)

api.add_resource(Foo, '/Foo', '/Foo/<str:id>')
api.add_resource(Bar, '/Bar', '/Bar/<str:id>')
api.add_resource(Baz, '/Baz', '/Baz/<str:id>')
Run Code Online (Sandbox Code Playgroud)

resource/foo.pybar.py分别):

from flask_restful import Resource
from bar import Bar

class Foo(Resource):
    def get(self):
        from app import api
        related = api.url_for(Bar, foo=self.id)
        return {'Foo':self.id, 'related_bar':related}, …
Run Code Online (Sandbox Code Playgroud)

python python-import flask flask-restful

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

禁止导入警告?

假设我编写了一个必须使用该imp模块的 python 包,并且我的包是“TestModule”,如下所示:

import imp
import pip
import sys

def update_and_reload(module, *args, **kwargs):
    pip.main(['install', module, '--upgrade', '--user'])
    return imp.reload(module)
Run Code Online (Sandbox Code Playgroud)

当我import TestModule在终端中执行此操作时,我收到了有关 的待弃用警告imp。我如何使imp的警告不发生/过滤掉?

python warnings python-import python-interactive

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

PyQT5 QtGui 不包含 QPushbutton

这是创建按钮对象的简单代码行

        btn = QtGui.QPushButton('Button')
Run Code Online (Sandbox Code Playgroud)

并给出这个错误

        AttributeError: module 'PyQt5.QtGui' has no attribute 'QPushbutton'
Run Code Online (Sandbox Code Playgroud)

这些是我的进口

        from PyQt5 import QtGui
        from PyQt5 import QtCore
        from PyQt5.QtCore import *
        from PyQt5.QtWidgets import *
        from PyQt5.QtGui import *

        import sys
Run Code Online (Sandbox Code Playgroud)

我正在运行 Python(3.5.2)32Bit 和 PyQt5 32bit 的兼容版本我也尝试过 QtGui.QLabel 但没有运气。

python python-import pyqt5

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

如何导入我自己的python文件?

在名为BinarySearch.py我的文件中有以下内容:

class SearchResult:    
    def __init__(self):
        self.was_found = False
        self.index = 0
    def __str__(self): 
        s = "SearchResult"
        s = s + "  was found:  "
        s = s + str(self.was_found) + "index:  " + str(self.index)
        return s
Run Code Online (Sandbox Code Playgroud)

在另一个文件中,假设它被命名为file2.py我有:

import os
cwd = os.getcwd()
import sys
sys.path.append(cwd)

import BinarySearch
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行时file2.py,我收到以下错误消息:

NameError: name 'SearchResult' is not defined
Run Code Online (Sandbox Code Playgroud)

看起来import BinarySearch实际上并没有导入BinarySearch

我正在使用 Spyder IDE。两个文件 (BinarySearch.pyfile2.py) 都在同一目录中。另外,我转到 Tool > PYTHONPATH manager 并将目录添加到路径中。我还尝试重新启动 spyder,看看这是否是路径更改生效所需的内容。它仍然不起作用。 …

python import python-import python-3.x spyder

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

ModuleNotFoundError: 没有名为“adspy_shared_utilities”的模块

我正在尝试使用该adspy包为我的 KNN 分类器绘制决策边界,但是每当我使用该包时,它都不会导入。我已经使用conda提示下载了几次,但没有任何反应。

带有错误信息的代码:

from adspy_shared_utilities import plot_fruit_knn

plot_fruit_knn(X_train, y_train, 5, 'uniform')


ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-7-ddf0c07df9f1> in <module>()
----> 1 from adspy_shared_utilities import plot_fruit_knn
      2 
      3 plot_fruit_knn(X_train, y_train, 5, 'uniform')

ModuleNotFoundError: No module named 'adspy_shared_utilities'
Run Code Online (Sandbox Code Playgroud)

请问我该如何解决?

python python-import

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

无法导入json

我正在尝试在 python 中导入 json 模块。

我以为我应该重新安装 json,但是键入时pip uninstall json出现错误,提示我未安装它。

尝试使用 pip 安装它时,我收到一条消息,说找不到它。也许尝试使用 pip 安装或卸载这个模块是愚蠢的,因为我太新而无法理解。我也很感激对此的解释。这是我尝试时收到的错误消息import json

Traceback (most recent call last):
  File "json_exp.py", line 1, in <module>
    import json
  File "C:\Users\hp\AppData\Local\Programs\Python\Python38-32\lib\json\__init__.py", line 106, in <module>
    from .decoder import JSONDecoder, JSONDecodeError
  File "C:\Users\hp\AppData\Local\Programs\Python\Python38-32\lib\json\decoder.py", line 3, in <module>
    import re
  File "C:\Users\hp\AppData\Local\Programs\Python\Python38-32\lib\re.py", line 125, in <module>
    import functools
  File "C:\Users\hp\AppData\Local\Programs\Python\Python38-32\lib\functools.py", line 17, in <module>
    from collections import namedtuple
ImportError: cannot import name 'namedtuple' from 'collections' (C:\Users\hp\Desktop\Programs and stuff\Python\collections.py)
Run Code Online (Sandbox Code Playgroud)

python python-import

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

'.' 有什么用?在 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 模块从同一个模块导入一个类?

我正在查看 的来源gunicorn,这是一个非常受欢迎的项目。

gunicorn/app/wsgiapp.py模块中,该模块定义了一个类,然后从同一个文件中导入该类:

class WSGIApplication(Application):
    ...

def run():
    from gunicorn.app.wsgiapp import WSGIApplication
    WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()

Run Code Online (Sandbox Code Playgroud)

该类定义在同一个模块中,在上面。为什么需要导入它?

如果我注释掉的第一行run()功能(进口线),gunicorn运行完全正常(不崩溃) -至少在路上我遇到它,用:gunicorn mysite.wsgi:applicationmysite是我的测试Django项目的名称。

这是一个备受瞩目的项目,如果不需要此导入,我想现在有人会删除它。这种进口有原因吗?

python python-import python-3.x

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