小编mon*_*kut的帖子

创建一个可以通过Pip和virtualenv安装的简单包

我想创建一个最简单的(hello world package)包,我可以使用pip在本地zip文件的virtualenv中安装.

在python我会做

>> from myinstallpackage import mymodule
>> mymodule.sayhello()
hello !
Run Code Online (Sandbox Code Playgroud)

setup.py和包文件夹中会包含什么内容?

谢谢

python pip virtualenv

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

os.path.exists()用于路径中的文件?

os.path.exists()在做任何事情之前,我经常用来检查文件是否存在.

我遇到过一种情况,我在调用已配置的env路径中的可执行文件,因此可以在不指定的情况下调用它abspath.

在调用之前是否可以执行某些操作来检查文件是否存在?(我可能会重新开始try/except,但首先我正在寻找替代品os.path.exists())

顺便说一句 - 我在Windows上这样做.

python windows

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

限制为django admin Inline显示的条目的查询集

在django admin中,使用django 1.2,我正在尝试添加一个InlineModelAdmin,以便在对条目进行更改时对保存应用注释.(对于每个编辑,一个条目应该有一个"ChangeComment").

我不想显示以前的条目,所以我试图强制ChangeCommentInline的formset.queryset为空,通过创建NoCommentsInlineFormset并在我的ChangeCommentInline中分配formset ,但仍然返回现有条目.

https://docs.djangoproject.com/en/1.3/topics/forms/modelforms/#changing-the-queryset

注-在上面的链接,他们使用BaseModelFormset,我使用BaseInlineFormset,我想到可能是问题.如果我用BaseModelFormset替换BaseInlineFormset,我得到一个关于"实例"不存在的错误.

admin.py

class NoCommentsInlineFormset(models.BaseInlineFormset):
    def __init__(self, *args, **kwargs):
        super(NoCommentsInlineFormset, self).__init__(*args, **kwargs)
        self.queryset = ChangeComment.objects.none()


class ChangeCommentInline(admin.StackedInline):
    model = ChangeComment
    extra = 1
    exclude = ("user", )
    formset = NoCommentsInlineFormset

    def save_model(self, request, obj, form, change):
        """auto-assign logined in user to comment"""
        if not change:
            obj.user = request.user
        obj.save()    


class EntryAdmin(admin.ModelAdmin):   
    inlines = (ChangeCommentInline, )
Run Code Online (Sandbox Code Playgroud)

可以限制Inline中显示的ChangeComment条目,还是有更好的方法来处理它?

python django django-admin

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

绘制pandas中每个唯一值计数的密钥计数

我有一组数据,我想从中绘制每个唯一ID 数的键 (x = unique_id_count,y = key_count),我正在尝试学习如何利用pandas.

在这种情况下:

unique_ids 1 =密钥数2

unique_ids 2 =密钥数1

from pandas import *
key_items = ("a", "a", "a", "a", "a", "b", "b", "b", "b", "b", "c", "c", "c")
id_data = ("X", "X", "X", "X", "X", "X", "X", "Y", "Y", "Y", "X", "X", "X")

df = DataFrame({'keys': key_items, 'ids': id_data})
Run Code Online (Sandbox Code Playgroud)

我已经设法通过从数据框中提取数据并重新构建数据并重建新数据帧,将数据转换为我想要的数据.在这种情况下,最好不要在没有pandas的python中完成所有操作......

unique_values = defaultdict(list)
for items in df.itertuples(index=False):
    key = items[1]
    v = items[0]
    unique_values[key].append(v)

unique_values_count = {}
for k, values in …
Run Code Online (Sandbox Code Playgroud)

python plot pandas

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

如何在geodjango中使用OpenStreetMap的openlayers显示数据?

我已经使用openlayersOpenStreetMaps运行管理应用程序运行geodjango .

现在我想写一些视图来显示数据.基本上,我只想在地图中添加一个点列表(在管理员中看到).

Geodjango似乎使用了一个特殊的 openlayers.js文件来管理它.有没有一种很好的方式与此接口?

如何编写视图/模板以在打开的街道地图窗口中显示geodjango数据,如管理员所示?

目前,我正在挖掘openlayers.js文件和api寻找一个"简单"的解决方案.(我没有经验,所以这需要一些时间.)

我可以看到的当前方式是将以下内容添加为模板,并使用django添加显示点所需的代码.(根据这里的例子)

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Draw Feature Example</title>

        <script src="http://www.openlayers.org/api/OpenLayers.js"></script>
      <script type="text/javascript">
            var map;

            function init(){
                map = new OpenLayers.Map('map');
                var layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
                        "http://labs.metacarta.com/wms/vmap0", {layers: 'basic'} );
                map.addLayer(layer);

                /*
                 * Layer style
                 */
                // we want opaque external graphics and non-opaque internal graphics
                var layer_style = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']);
                layer_style.fillOpacity = 0.2;
                layer_style.graphicOpacity = 1;

                /*
                 * Blue style
                 */
                var …
Run Code Online (Sandbox Code Playgroud)

python mapping geodjango openlayers

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

如何在python3中使用ldap3绑定(验证)用户

我正在尝试使用ldap3版本'0.9.7.4' 将一些代码更新为python3 .(https://pypi.python.org/pypi/ldap3)

以前,我使用python-ldap和python2来验证这样的用户:

import ldap
address = "ldap://HOST:389"
con = ldap.initialize(address)
base_dn = "ourDN=jjj"
con.protocol_version = ldap.VERSION3
search_filter = "(uid=USERNAME)"
result = con.search_s(base_dn, ldap.SCOPE_SUBTREE, search_filter, None)  
user_dn = result[0][0]  # get the user DN
con.simple_bind_s(user_dn, "PASSWORD")
Run Code Online (Sandbox Code Playgroud)

这将正确返回(97, [], 2, [])正确的密码,并ldap.INVALID_CREDENTIALS使用不正确的密码引发绑定尝试.

ldap3在python3中使用我正在做以下事情:

from ldap3 import Server, Connection, AUTH_SIMPLE, STRATEGY_SYNC, ALL
s = Server(HOST, port=389, get_info=ALL)
c = Connection(s, authentication=AUTH_SIMPLE, user=user_dn, password=PASSWORD, check_names=True, lazy=False, client_strategy=STRATEGY_SYNC, raise_exceptions=True)
c.open()
c.bind()
Run Code Online (Sandbox Code Playgroud)

它引发了以下异常:

ldap3.core.exceptions.LDAPInvalidCredentialsResult: LDAPInvalidCredentialsResult - …
Run Code Online (Sandbox Code Playgroud)

python ldap python-3.x ldap3

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

在django中为表单自动生成表单字段

我有一些模型,我想从这些数据生成一个多选形式.因此,表单将包含每个类别的条目,选择将是该类别中的技能.

models.py

class SkillCategory(models.Model):
    name = models.CharField(max_length=50)

class Skill(models.Model):
    name = models.CharField(max_length=50)
    category = models.ForeignKey(SkillCategory)
Run Code Online (Sandbox Code Playgroud)

有没有办法自动生成表单字段?我知道我可以在每个SkillCategory的表单中手动添加"SkillCategory"条目,但将其作为模型的原因是技能和技能类别可以自由编辑.

我想做这样的事情:(我试过这个,但没有让它工作,不记得确切的错误...)

forms.py

class SkillSelectionForm(forms.Form):
    def __init__(*args, **kwargs):
        super(SkillSelectionForm, self).__init__(*args, **kwargs)
        for c in SkillCategory.objects.all():
            category_skills = [(pk, s.name) for s in c.skill_set.all()]
            setattr(self, c.name, forms.MultipleChoiceField(choices=category_skills, widget=forms.CheckboxSelectMultiple))
Run Code Online (Sandbox Code Playgroud)

这将使用SkillCategory.name创建表单字段条目,并将选项分配为Skill中的选项.field_name/display_name用于避免非ascii 类别名称的问题.

forms.py

def get_categorized_skills():
    skills = {}
    for s in Skill.objects.values('pk', 'name', 'category__name').order_by('category__name'):
        if s['category__name'] not in skills.keys():
            skills[s['category__name']] = []
        skills[s['category__name']].append((s['pk'], s['name']))
    return skills

class SkillSelectionForm(forms.Form): 
    def __init__(self, *args, **kwargs):
        super(SkillSelectionForm, self).__init__(*args, **kwargs)
        skills …
Run Code Online (Sandbox Code Playgroud)

python django django-forms

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

Lua中有一个pass语句,就像在python中一样

就像在python中一样,我们有pass语句.

def calcu():
    pass

在Lua有这样的声明吗?我想要做

if connect then 
    pass

lua

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

在Windows中将数据从python传输到另一个应用程序的最佳方法是什么?

我正在开发一个带有.Net(C++)团队的应用程序,并提供一个COM接口来与python和其他语言进行交互.

我们发现通过COM推送数据的速度非常慢.

我考虑了几种选择:

  • 将数据转储到文件并通过com发送文件路径
  • 通过mmap共享内存?
  • 直接通过套接字流数据?

根据您的经验,传递数据的最佳方式是什么?

python com winapi data-transfer

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

通过readinto()将二进制数据解析为ctypes结构对象

我正在尝试处理二进制格式,遵循以下示例:

http://dabeaz.blogspot.jp/2009/08/python-binary-io-handling.html

>>> from ctypes import *
>>> class Point(Structure):
>>>     _fields_ = [ ('x',c_double), ('y',c_double), ('z',c_double) ]
>>>
>>> g = open("foo","rb") # point structure data
>>> q = Point()
>>> g.readinto(q)
24
>>> q.x
2.0
Run Code Online (Sandbox Code Playgroud)

我已经定义了我的标题的结构,我正在尝试将数据读入我的结构,但我遇到了一些困难.我的结构是这样的:

class BinaryHeader(BigEndianStructure):
    _fields_ = [
                ("sequence_number_4bytes", c_uint),
                ("ascii_text_32bytes", c_char),
                ("timestamp_4bytes", c_uint),
                ("more_funky_numbers_7bytes", c_uint, 56),
                ("some_flags_1byte", c_byte),
                ("other_flags_1byte", c_byte),
                ("payload_length_2bytes", c_ushort),

                ] 
Run Code Online (Sandbox Code Playgroud)

ctypes的文档说:

对于像c_int这样的整数类型字段,可以给出第三个可选项.它必须是一个小的正整数,用于定义字段的位宽.

因此,("more_funky_numbers_7bytes", c_uint, 56),我试图将字段定义为7字节字段,但我收到错误:

ValueError:位字段无效的位数

所以我的第一个问题是,如何定义一个7字节的int字段?

然后,如果我跳过该问题并注释掉"more_funky_numbers_7bytes"字段,结果数据将被加载...但正如预期的那样,只有1个字符被加载到"ascii_text_32bytes"中.由于某种原因16,我假设返回的是它读入结构的计算字节数...但如果我正在评论我的"时髦数字"字段而"ascii_text_32bytes"只给出一个字符(1字节),不应该是13,而不是16 ???

然后我尝试将char字段分解为一个单独的结构,并从我的Header结构中引用它.但那也不起作用......

class StupidStaticCharField(BigEndianStructure):
    _fields_ = [ …
Run Code Online (Sandbox Code Playgroud)

c python ctypes data-structures

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