小编ite*_*em4的帖子

pip从setup.py安装tox的tox依赖项

我制作了我的项目,setuptools我想用它进行测试tox.我在变量中列出了依赖项并添加到setup()参数(tests_requireextras_require)中.我的项目需要安装tests_require测试中列出的所有依赖项,但pip install不安装它们.

我尝试了这个,但它不起作用:

install_command = pip install {opts} {packages}[tests]
Run Code Online (Sandbox Code Playgroud)

如何安装测试依赖项而无需管理多个依赖项列表(即在两者test_requirements.txttests_require变量中列出所有依赖项)?

python pip setuptools easy-install tox

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

在3.4和3.5之间的python中的协程,如何保持backwords兼容性?

我正在开发python聊天机器人框架asyncio.但是我看PEP-492并且有新的语法,async/ await最后它被接受了.

我喜欢async/ awaitsyntax,我想用它.但我担心3.4后缀兼容性.

如果我在代码中使用新语法,有人可以在3.4中使用它吗?

例如,我写了一些这样的代码,

import asyncio

class ChatBot:
    def __init__(self, loop):
        self.loop = loop

    async def connect(self):
        self.reader, self.writer = await asyncio.open_connect(HOST, PORT, loop=self.loop)

    async def read():
        return await self.reader.read()

    async def run(self):
        running = True
        while running:
            try:
                await self.connect()
                line = await self.read()
                if not line:
                    continue
                await self.parse(line)
            except BotInternalError as e:
                if e.stop:
                    running = False
                    break
            except:
                pass

    async def parse(self, msg):
        if …
Run Code Online (Sandbox Code Playgroud)

python asynchronous python-3.x python-asyncio

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

Python的asyncio.coroutine可以被认为是一个生成器吗?

我用谷歌搜索python coroutine,只看到了发电机(几乎所有的例子yield都没用asyncio.)

它们真的一样吗?

asyncio.coroutine和发电机有什么区别?

python coroutine python-3.x python-asyncio

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

对于异步操作,我应该用@ asyncio.coroutine装饰什么?

我想以异步方式运行我的代码.我应该装饰@asyncio.coroutine什么以及我应该yield from为异步操作调用什么?

在我的例子中,我有一些没有装饰器的示例代码.(简单的聊天机器人看起来像IRC)

import asyncio


class ChatBot:
    def __init__(self, loop):
        conn = asyncio.open_connection(HOST, PORT, loop=loop)
        self.reader, self.writer = yield from conn

    def send(self, msg):
        self.writer.write(msg)

    def read(self):
        msg = yield from self.reader.readline()
        return msg

    def run(self):
        while True:
            msg = self.read()
            self.parse(msg)

    def parse(self, msg):
        if msg.startswith('PING'):
            self.some_work(msg)
        elif msg.startswith('ERROR'):
            self.some_error()
        else:
            self.server_log(msg)

    def some_work(self, msg):
        # some work. It can call asynchronous function like I/O or long operation. It can use self.send().

    def some_error(self, msg): …
Run Code Online (Sandbox Code Playgroud)

python asynchronous coroutine python-3.x python-asyncio

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