小编New*_*Guy的帖子

Flask Blueprint AttributeError:'module'对象没有属性'name'错误

我的API正在构建,以允许开发人员扩展其功能.我的计划是通过提供一个"扩展"目录来实现这一目的,他们可以放入蓝图,它们将被动态加载.这是我用来导入的代码(从本教程修改)

from flask import Flask

import pkgutil
import sys

app = Flask(__name__)

EXTENSIONS_DIR = "extensions"
modules = pkgutil.iter_modules(path=[EXTENSIONS_DIR])
for loader, mod_name, ispkg in modules: 
    if mod_name not in sys.modules:
        # It imports fine
        loaded_mod = __import__(EXTENSIONS_DIR+"."+mod_name+"."+mod_name, fromlist=[mod_name])
        # It does not register
        app.register_blueprint(loaded_mod)
Run Code Online (Sandbox Code Playgroud)

这是我的项目的目录布局.该extensions目录是开发人员放弃其扩展功能的目录.

/root
    /extensions
        /extension1
            __init__.py
            extension1.py
        /extension2
            __init__.py
            extension2.py
    simple_example.py
Run Code Online (Sandbox Code Playgroud)

问题是我得到了这个错误,并且不确定它告诉我的是什么.

>python simple_example.py
Traceback (most recent call last):
  File "simple_example.py", line 14, in <module>
    app.register_blueprint(loaded_mod)
  File "C:\Python27\lib\site-packages\flask\app.py", line 62, in wrapper_func
    return f(self, …
Run Code Online (Sandbox Code Playgroud)

python attributeerror flask

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

列表到数据框的字典

我有一个字典,每个键都有一个浮点值列表.这些列表的大小不同.

我想将这个字典转换为数据帧,以便我可以轻松地对数据执行一些分析功能(最小值,最大值,平均值,标准偏差等).

我的字典看起来像这样:

{
    'key1': [10, 100.1, 0.98, 1.2],
    'key2': [72.5],
    'key3': [1, 5.2, 71.2, 9, 10.11, 12.21, 65, 7]
}
Run Code Online (Sandbox Code Playgroud)

是什么让这个成数据帧,这样我可以利用的最佳途径基本功能一样sum,mean,describe,std

我找到的例子(如上面的链接)都假设每个键在列表中具有相同数量的值.

python pandas

16
推荐指数
3
解决办法
9837
查看次数

sqlalchemy在关系上创建backref时出错

我有两个非常简单的模型.在我的Post模型中,应该有两个关系进入User表中.一个是帖子的所有者,一个是帖子的最后一个编辑.它们可以是不同的值,但两者都指向同一个User表.

我的模型是这样设置的

class Post(Base):
    last_editor_id = Column(BigInteger, ForeignKey('users.id'), nullable=True)
    last_editor = relationship('User', backref='posts', foreign_keys=[last_editor_id])
    owner_id = Column(BigInteger, ForeignKey('users.id'), nullable=False, index=True)
    owner = relationship('User', backref='posts', foreign_keys=[owner_id])

class User(Base):
    '''This represents a user on the site'''
    __tablename__ = 'users'
    id = Column(BigInteger, primary_key=True, unique=True)
    name = Column(BigInteger, nullable=False)
Run Code Online (Sandbox Code Playgroud)

当我尝试创建这些模型时,我收到以下错误

sqlalchemy.exc.ArgumentError: Error creating backref 'posts' on relationship 'Post.owner': property of that name exists on mapper 'Mapper|User|users'
Run Code Online (Sandbox Code Playgroud)

如何更正此问题,以便我可以在Post模型中维护两个forgeign键?

python sqlalchemy

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

如何在Pandas数据帧中找到5分钟的空白?

我的pandas数据框看起来与此类似:

                     TIMESTAMP  EVENT_COUNT
0          2014-07-23 04:28:23            1 
1          2014-07-23 04:28:24            1
2   2014-07-23 04:28:25.999000            4
3          2014-07-23 04:28:27            1
4   2014-07-23 04:28:28.999000            2
5          2014-07-23 04:28:30            1
6          2014-07-23 04:29:31            7
7          2014-07-23 04:29:33            1
8          2014-07-23 04:29:34            1
9          2014-07-23 04:29:36            1
10         2014-07-23 04:40:37            2
11         2014-07-23 04:40:39            1
12         2014-07-23 04:40:40            1
13         2014-07-23 04:40:42            1
14         2014-07-23 04:40:43            1
15  2014-07-23 04:40:44.999000            4
16         2014-07-23 04:41:46            1
17         2014-07-23 04:41:47            1
18         2014-07-23 04:41:49            1
19 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

如何在不传递db对象的情况下将Flask模型从app.py中分离出来?

我想使用Flask-Migrate并查看他们的示例:

from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.script import Manager
from flask.ext.migrate import Migrate, MigrateCommand

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'

db = SQLAlchemy(app)
migrate = Migrate(app, db)

manager = Manager(app)
manager.add_command('db', MigrateCommand)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(128))

if __name__ == '__main__':
    manager.run()
Run Code Online (Sandbox Code Playgroud)

这作为一个简单的播放示例很有用,但我有多个模型,我不想在这个脚本和定义我的应用程序代码的模型中定义模型.因此,我想将它们拉入我可以在两者之间共享的模型文件中.

我尝试通过将User类放入a models.py然后从那里导入User来尝试这样做.不幸的是,这会抛出一个NameError: name 'db' is not defined.

我的问题是:

  • 我需要db = SQLAlchemy(app)在my models.py中使用吗?如果是这样,我的迁移脚本和烧瓶应用程序本身都可以使用吗?
  • 如果我不能(或不应该)将其放入models.py,我如何在不通过db所有文件的情况下在自己的文件中使用我的模型?

python flask flask-migrate

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

PyCharm 如何处理模块的相对导入?

我在继承的项目上有以下目录结构:

work_dir/
    FlaskControlPanel/
        static/
        templates/
        app.py
    models/
        __init__.py
        model1.py
        model2.py
    script1.py
    script2.py
Run Code Online (Sandbox Code Playgroud)

From script1.pyor script2.pyI can run this from models.model1 import Class1, Class2and it works。使用 PyCharm 时,我可以在app.py.

但是,当我在我的开发服务器上部署它时,这在app.py. 我收到错误ImportError: No module named models.model1

PyCharm 做了什么来解决这个问题?

app.py当我在开发服务器上运行 Flask 应用程序时,如何修复我的导入以在 PyCharm 中工作?我通常只python app.pyFlaskControlPanel目录中使用它在服务器上运行它。

python python-import pycharm flask

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

使用gitpython时如何设置git用户名和密码?

我计划在我的项目中使用 GitPython。当我测试它时,使用此代码我收到一个错误。

repo.index.add(['*']) 
repo.index.commit(message="Initial Commit")
repo.remotes.origin.push()
Run Code Online (Sandbox Code Playgroud)

错误是:

Traceback (most recent call last):
  File "test.py", line 24, in <module>
    repo.remotes.origin.push()
  File "C:\Python27\lib\site-packages\git\remote.py", line 627, in push
    return self._get_push_info(proc, progress or RemoteProgress())
  File "C:\Python27\lib\site-packages\git\remote.py", line 564, in _get_push_info
    finalize_process(proc)
  File "C:\Python27\lib\site-packages\git\remote.py", line 64, in finalize_process
    proc.wait()
  File "C:\Python27\lib\site-packages\git\cmd.py", line 100, in wait
    raise GitCommandError(self.args, status, self.proc.stderr.read())
git.exc.GitCommandError: 'git push --porcelain origin' returned exit status 128:
Run Code Online (Sandbox Code Playgroud)

在最后一行之后没有消息。但是,如果我git push --porcelain origin从命令行手动运行,则会收到错误消息:

fatal: could not read Username for 'https://github.com': No such file or …
Run Code Online (Sandbox Code Playgroud)

python git gitpython

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

如何检测线程是否死亡,然后重新启动它?

我有一个应用程序启动一系列线程.有时,其中一个线程死亡(通常是由于网络问题).如何正确检测线程崩溃并重新启动该线程?这是示例代码:

import random
import threading
import time

class MyThread(threading.Thread):
    def __init__(self, pass_value):
        super(MyThread, self).__init__()
        self.running = False
        self.value = pass_value

    def run(self):
        self.running = True

        while self.running:
            time.sleep(0.25)

            rand = random.randint(0,10)
            print threading.current_thread().name, rand, self.value
            if rand == 4:
                raise ValueError('Returned 4!')


if __name__ == '__main__':
    group1 = []
    group2 = []
    for g in range(4):
        group1.append(MyThread(g))
        group2.append(MyThread(g+20))


    for m in group1:
        m.start()

    print "Now start second wave..."

    for p in group2:
        p.start()
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我启动4个线程然后我开始4个线程.每个线程随机生成int介于0和10之间.如果int4,则会引发异常.请注意,我没有 …

python multithreading restart python-multithreading

6
推荐指数
2
解决办法
7223
查看次数

在同一个测试中模拟对同一个函数的两个不同的响应

在我之前的问题中,我询问了如何模拟包含requests.get在我的班级中的班级。如果我只打电话一次,提供的答案效果很好requests.get。然而,事实证明我的课程比我做的例子更复杂。

我的班级打了request.get两次电话。一次是在初始化时,因为它到达一个 API 端点,该端点返回我需要在实际请求中使用的 API 值,一次是在我进行.fetch调用时。

import requests
class ExampleAPI(object):
    def __init__(self):
        self.important_tokens = requests.get(url_to_tokens)['tokens']

    def fetch(self, url, params=None, key=None, token=None, **kwargs):
        return requests.get(url, params=self.important_tokens).json() 
Run Code Online (Sandbox Code Playgroud)

现在,事实证明我需要创建两个模拟响应。一种用于初始化,一种用于.fetch. 使用上一个答案中的代码:

@patch('mymodule.requests.get')
def test_fetch(self, fake_get):
    expected = {"result": "True"}
    fake_get.return_value.json.return_value = expected
    e = ExampleAPI()    # This needs one set of mocked responses
    self.assertEqual(e.fetch('http://my.api.url.example.com'), expected)    # This needs a second set
Run Code Online (Sandbox Code Playgroud)

如何为这两个单独的调用创建单独的响应request.get

python unit-testing mocking python-2.7

5
推荐指数
2
解决办法
6648
查看次数

How do I get just a list of commands/subcommands using click in my test suite?

I have a CLI application built that uses grouped commands and sub-commands. Everything is working. However, I want to ensure this continues to be the case in the future, so I want to ensure that all of my commands and sub-commands have loaded correctly.

My first thought to do this was to just run

commands = ["config", "othercommand"]
runner = CliRunner()
result = runner.invoke(cli.main)
for command in commands:
    assert command in result.output
Run Code Online (Sandbox Code Playgroud)

This has a few pitfalls, from my point …

python command-line-interface pytest python-click

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