小编sel*_*edu的帖子

Linux上的Python Wheels(如何?为什么?)

我知道轮子是在PyPI上传的模块的二进制版本.

pip install

  • 在Windows上:我下载并安装了轮子.
  • 在Ubuntu上:我应该得到包的源代码分配但是某些情况下我得到了轮子.
  • 在fedora:Tricky我必须用dnf安装

我尝试添加我的包为好.但我只能为窗户上传轮子.

  • 为什么有些软件包为Linux平台提供轮子?
  • 这个可以吗?提供二进制文件而不是源代码?
  • 为什么我不能提供轮子?

注意:我对Fedora rpm包有一点了解.我现在对Ubuntu上的轮子很感兴趣.

python pypi python-wheel

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

如何在Flask MIddleware中访问请求

我想在中间件中访问request.url.

Flask app - test.py

from flask import Flask
from middleware import TestMiddleware
app = Flask(__name__)

app.wsgi_app = TestMiddleware(app.wsgi_app)

@app.route('/')
def hello_world():
    return 'Hello World!'

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

middleware.py:

from flask import request

class TestMiddleware(object):

    def __init__(self, app):
        self.app = app 

    def __call__(self, environ, start_response):
        # How do I access request object here.
        print "I'm in middleware"
        return self.app(environ, start_response)
Run Code Online (Sandbox Code Playgroud)

我理解可以在Flask应用程序上下文中访问请求.我们通常使用

with app.test_request_context()
Run Code Online (Sandbox Code Playgroud)

但在中间件中,我无法访问Flask app对象.

我该怎么办?

谢谢你的帮助..

python wsgi flask

9
推荐指数
2
解决办法
8266
查看次数

列表理解与条件

我有一个简单的清单.

>>> a = [0, 1, 2]
Run Code Online (Sandbox Code Playgroud)

我想使用列表推导从它创建一个新列表.

>>> b = [x*2 for x in a]
>>> b
[0, 2, 4]
Run Code Online (Sandbox Code Playgroud)

很简单,但是如果我只想操作非零元素呢?

'if'在列表推导中需要'else',所以我想出了这个.

>>> b = [x*2 if x != 0 else None for x in a]
>>> b
[None, 2, 4]
Run Code Online (Sandbox Code Playgroud)

但理想的结果是.

>>> b
[2, 4]
Run Code Online (Sandbox Code Playgroud)

我可以这样做

>>> a = [0, 1, 2]
>>> def f(arg):
...     for x in arg:
...         if x != 0:
...             yield x*2
... 
>>> list(f(a))
[2, 4]
Run Code Online (Sandbox Code Playgroud)

或使用'过滤器'和lambda

>>> a = [0, …
Run Code Online (Sandbox Code Playgroud)

python if-statement list-comprehension generator-expression

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