小编Hon*_*rek的帖子

entry_points/console_scripts和setup.py中的脚本之间的区别?

基本上有两种方法可以将Python控制台脚本安装到我的路径中setup.py:

setup(
    ...
    entry_points = {
        'console_scripts': [
            'foo = package.module:func',
        ],
    }
)
Run Code Online (Sandbox Code Playgroud)

setup(
    ...
    scripts = [
        'scripts/myscript.sh'
    ]
)
Run Code Online (Sandbox Code Playgroud)

有什么区别?我看到第一种方法允许我为我的脚本选择不错的特定名称,但是还有其他差异吗?不同的原始用途,兼容性(setuptools,distutils,......?),用法,......?我很困惑,一个精心设计的回复可以帮助我(也可能还有其他人)正确理解这一切.

更新:因为我问过PyPA 在这个主题上发表了这些很酷的文档.

python package setup.py

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

通过机器学习从网页中提取信息

我想 Python中的网页提取特定类型的信息.让我们说邮政地址.它有数千种形式,但仍然可以辨认出来.由于存在大量表单,因此编写正则表达式甚至是语法之类的东西并使用解析器生成器来解析它可能非常困难.

所以我认为应该采用的方式是机器学习.如果我理解得很好,我应该能够制作一个数据样本,在那里我将指出应该是什么结果,然后我有一些东西可以从中学习如何自己识别结果.这就是我对机器学习的全部了解.也许我可以使用一些自然语言处理,但可能并不多,因为所有的图书馆都使用英语,我需要这个用于捷克语.

问题:

  1. 我可以通过机器学习轻松解决这个问题吗?这是一个好方法吗?
  2. 有没有简单的例子可以让我开始?我是机器学习菜鸟,我需要一些实用的东西; 更接近我的问题更好; 更简单更好.
  3. 有很多用于机器学习的Python库.哪一个最适合我的问题?
  4. 很多这样的libs都不是很容易使用的文档,因为它们来自科学环境.是否有任何好的资料来源(书籍,文章,快速入门)弥合差距,即专注于对机器学习完全不了解的新手?我打开的每个文档都以我不理解的术语开头,例如网络,分类,数据集等.

更新:

正如你们所提到的,我应该展示一些我想要脱离网络的数据,这里有一个例子.我对电影放映时间很感兴趣.它们看起来像这样(其中三个):

<div class="Datum" rel="d_0">27. ?ervna – st?eda, 20.00
</div><input class="Datum_cas" id="2012-06-27" readonly=""><a href="index.php?den=0" rel="0" class="Nazev">Zahájení letního kina 
</a><div style="display: block;" class="ajax_box d-0">
<span class="ajax_box Orig_nazev">zábava • hudba • film • letní bar
</span>
<span class="Tech_info">Sv?t podle Fagi
</span>
<span class="Popis">Facebooková  komiksová Fagi v podání …
Run Code Online (Sandbox Code Playgroud)

python extract machine-learning html-parsing web-scraping

50
推荐指数
4
解决办法
3万
查看次数

在SQLAlchemy关系上设置delete-orphan会导致AssertionError:此AttributeImpl未配置为跟踪父项

这是我的Flask-SQLAlchemy声明代码:

from sqlalchemy.ext.associationproxy import association_proxy
from my_flask_project import db


tagging = db.Table('tagging',
    db.Column('tag_id', db.Integer, db.ForeignKey('tag.id', ondelete='cascade'), primary_key=True),
    db.Column('role_id', db.Integer, db.ForeignKey('role.id', ondelete='cascade'), primary_key=True)
)


class Tag(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), unique=True, nullable=False)

    def __init__(self, name=None):
        self.name = name

    @classmethod
    def delete_orphans(cls):
        for tag in Tag.query.outerjoin(tagging).filter(tagging.c.role_id == None):
            db.session.delete(tag)


class Role(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id', ondelete='cascade'))
    user = db.relationship('User', backref=db.backref('roles', cascade='all', lazy='dynamic'))
    ...
    tags = db.relationship('Tag', secondary=tagging, cascade='all', backref=db.backref('roles', cascade='all'))
    tag_names = association_proxy('tags', 'name')

    __table_args__ …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask flask-sqlalchemy

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

在进程上使用Celery并同时执行任务

我想使用Celery作为我的任务的队列,所以我的网络应用程序可以排队任务,返回响应,同时/某天/任务将处理任务...我建立了一种API,所以我不知道将提供什么样的任务 - 将来,可以有处理HTTP请求的任务,另一个IO,以及CPU消耗任务.关于这一点,我想在进程上运行Celery的工作者,因为这些是Python中的通用类型的并行性.

但是,我也想在我的任务中使用gevent,所以我可以有一个任务产生许多HTTP请求,等等.问题是,当我这样做时:

from gevent import monkey
monkey.patch_all()
Run Code Online (Sandbox Code Playgroud)

芹菜停止工作.它开始,但没有任何任务可以有效排队 - 他们似乎去经纪人,但芹菜工人不收集它们并处理它们.只有开始和等待.如果我删除这些行并执行任务而没有任何gevent和并行化,一切正常.

我想这可能是因为gevent补丁也在线程化.所以我试过了

from gevent import monkey
monkey.patch_all(thread=False)
Run Code Online (Sandbox Code Playgroud)

...但是Celery甚至没有启动,它在没有给出原因的情况下崩溃(启用了日志记录的调试级别).

是否有可能使用Celery来排队任务和gevent在一个任务中做一些事情?怎么样?我做错了什么?

python monkeypatching multiprocessing celery gevent

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

如何从SqlAlchemy中的多对多集合中删除所有项目?

当我需要从声明性ORM多对多关系中删除一个对象时,我应该这样做:

blogpost.tags.remove(tag)
Run Code Online (Sandbox Code Playgroud)

好.如果我需要清除所有这些关系(不仅仅是一个),我该怎么办?典型情况:我想为我的博客帖子设置一个新的标签列表.所以我需要...:

  1. 删除该博客帖子和标签之间的所有现有关系.
  2. 设置新关系并创建新标记(如果它们不存在).

当然,可以有更好的方法来做到这一点.在那种情况下,请告诉我.

python many-to-many sqlalchemy

11
推荐指数
2
解决办法
6100
查看次数

如何在Python中实现curl -u?

我正在尝试使用http://developer.github.com/v3/来检索项目问题.这有效:

curl -u "Littlemaple:mypassword" https://api.github.com/repos/MyClient/project/issues
Run Code Online (Sandbox Code Playgroud)

它返回我客户项目的所有私人问题.但是,我无法找到如何在Python中实现它.我找到的两种方式(例如Python urllib2 Basic Auth Problem)都不起作用,它们返回404或403错误:

def fetch(url, username, password):
    """Wonderful method found on forums which does not work.""""
    passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
    passman.add_password(None, url, username, password)
    urllib2.install_opener(urllib2.build_opener(urllib2.HTTPBasicAuthHandler(passman)))

    req = urllib2.Request(url)
    f = urllib2.urlopen(req)
    return f.read()
Run Code Online (Sandbox Code Playgroud)

...和:

def fetch(url, username, password):
    """Wonderful method found on forums which does not work neither.""""
    request = urllib2.Request(url)
    base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n', '')
    request.add_header("Authorization", "Basic %s" % base64string)   
    return urllib2.urlopen(request).read()
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?提前致谢!

python https github-api

10
推荐指数
2
解决办法
4465
查看次数

如果我不需要用户访问令牌,如何使用请求从Python连接到Facebook Graph API?

我正在尝试使用我最喜欢的Requests库找到如何使用Facebook Graph API的最简单方法.问题是,我发现的所有示例都是关于获取用户访问令牌,重定向和用户交互.

我只需要应用程序访问令牌.我不处理任何非公共数据,所以我不需要用户交互,因为我的最终应用程序应该是命令行脚本,不需要重定向.

我在这里发现了类似的东西,但它似乎只是优雅的一切.此外,我更喜欢使用请求请求-OAuth2.或者也许有图书馆?我找到了Requests-FacebookFacepy(两者都是基于Requests),但是,所有的例子都是重定向等等.Shapepy根本不处理授权,它只接受你的令牌,你可以通过某种方式得到它.

有人可以提供一个简短,明智,有效的例子,如何获得应用程序访问令牌?

python facebook-graph-api python-requests

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

PHP的最佳会话save_handler是什么?为什么?

许多方法可以在PHP中保存会话.将它们保存到文件中有一些问题 - 例如,它不是可扩展的解决方案.在PHP中存储会话的最佳方法是什么?我发现很容易将会话保存到SQLite中,这至少比成千上万的文件更紧凑,但似乎没有多少人这样做.为什么?他们不知道它,它们无所谓,或者它不比文件更好?你有memcached,redis的经验吗?我有自己的服务器,我不满意将会话保存到纯粹的简单文件中.

谢谢你的任何建议!

编辑:问题是:什么是PHP的"最佳"会话save_handler,为什么?我对答案很感兴趣,它总结了各种可能性并列出了每种方法的优缺点.我引用了"最佳",因为我知道它取决于应用程序,但我对哪种方法最适合哪种类型的应用程序感兴趣.

php sqlite session memcached redis

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

如何让Travis CI安装在tests_require中声明的Python依赖项?

我有Python包setup.py.它具有声明的常规依赖项install_requires和声明的开发依赖项tests_require,例如flake8.

我想pip install -e .或正在运行python setup.py test也将安装我的开发依赖项,它们将可用.然而,显然他们不是,我很难设置我的Travis CI构建权.

install:
  - "pip install -e ."
script:
  - "python setup.py test"
  - "flake8"
Run Code Online (Sandbox Code Playgroud)

如上配置的构建将失败,因为flake8将无法找到有效命令.我也尝试flake8python setup.py test命令(via subprocess)内部调用,但也没有成功.

我也讨厌flake8不能轻易成为python setup.py test命令的组成部分的事实,但这是另一个故事.

python testing setup.py travis-ci

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

有没有办法在Python中配置SMTPHandler来做更多高级的东西?

我使用标准的SMTPHandler记录器来捕获我的Python异常.有没有办法将异常名称放入邮件主题?它会比使用静态主题好得多,因为Gmail(而不仅仅是Gmail)可以根据主题对对话进行分组,因此可以根据错误类型对其进行分组.

例如,如果50个完全相同的错误发生+ 1个不同,我会在我的收件箱中看到两个对话,而不是包含51个电子邮件的1个组,我可以很容易地忽略单个不同的对话.

另外,有没有办法防止发送仍然相同的错误?E. g.以某种方式定义我自己的功能决定是否要发送电子邮件.该函数将在params中获取一些基本信息,以便它可以决定(例如缓存并查看是否已发送此类问题).

我浏览了文档,但我找不到那样的东西.这似乎很简单.如果SMTPHandler无法做到这一点,那么最好还是简单的替代方案是什么?任何整洁的图书馆?

谢谢!

python logging smtp exception-handling

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