小编jwh*_*ock的帖子

如何将其他文件添加到滚轮?

如何控制车轮中包含哪些文件?它似乎MANIFEST.in没有被使用python setup.py bdist_wheel.

更新:

从源tarball到wheel安装之间的区别我错了.源代码分发包括指定的文件MANIFEST.in,但安装的软件包只有python文件.需要步骤来识别应安装的其他文件,无论安装是通过源分发,egg还是wheel.也就是说,其他包文件需要package_data,而命令行脚本或系统配置文件需要包外的文件的data_files.

原始问题

我有一个项目,我一直python setup.py sdist用来构建我的包,MANIFEST.in控制包含和排除的文件,以及pyromacheck-manifest来确认我的设置.

我最近将它转换为双Python 2/3代码,并添加了一个setup.cfg

[bdist_wheel]
universal = 1
Run Code Online (Sandbox Code Playgroud)

我可以用python setup.py bdist_wheel它来制造一个轮子,它看起来像是一个万向轮.但是,它不包括指定的所有文件MANIFEST.in.

什么安装?

我挖得更深,现在更了解包装和轮子.这是我学到的东西:

我将两个包文件上传到PyPi上multigtfs项目:

  • multigtfs-0.4.2.tar.gz- 源tar球,包括所有文件MANIFEST.in.
  • multigtfs-0.4.2-py2.py3-none-any.whl - 有问题的二进制分布.

我创建了两个新的虚拟环境,都使用Python 2.7.5,并安装了每个包(pip install multigtfs-0.4.2.tar.gz).这两种环境几乎完全相同.它们有不同的.pyc文件,即"已编译"的Python文件.有记录磁盘上不同路径的日志文件.源tar球multigtfs-0.4.2-py27.egg-info的安装包括一个文件夹,详细说明安装,并且wheel安装有一个multigtfs-0.4.2.dist-info文件夹,其中包含该进程的详细信息.但是,从使用multigtfs项目的代码的角度来看,两种安装方法之间没有区别.

显然,我的测试使用的.zip文件都没有,因此测试套件将失败:

$ django-admin startproject demo
$ cd demo
$ pip …
Run Code Online (Sandbox Code Playgroud)

python pip python-wheel

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

104,'通过对等连接重置'套接字错误,或什么时候关闭套接字导致RST而不是FIN?

我们正在并行开发Python Web服务和客户端Web站点.当我们从客户端向服务发出HTTP请求时,一次调用始终在socket.py中引发socket.error,在read中:

(104, 'Connection reset by peer')

当我使用wireshark收听时,"好"和"坏"的反应看起来非常相似:

  • 由于OAuth标头的大小,请求将分为两个数据包.该服务用ACK响应
  • 服务发送响应,每个标头一个数据包(HTTP/1.0 200 OK,然后是Date标头等).客户端使用ACK响应每个客户端.
  • (好请求)服务器发送FIN,ACK.客户端以FIN,ACK响应.服务器响应ACK.
  • (错误请求)服务器发送RST,ACK,客户端不发送TCP响应,socket.error在客户端引发.

Web服务和客户端都运行在运行glibc-2.6.1的Gentoo Linux x86-64机器上.我们在同一个virtual_env中使用Python 2.5.2.

客户端是一个Django 1.0.2应用程序,它调用httplib2 0.4.0来发出请求.我们使用OAuth签名算法对请求进行签名,OAuth令牌始终设置为空字符串.

该服务正在运行Werkzeug 0.3.1,它使用的是Python的wsgiref.simple_server.我通过wsgiref.validator运行WSGI应用程序,没有任何问题.

看起来这应该很容易调试,但是当我在服务端追踪一个好的请求时,它看起来就像是一个错误的请求,在socket._socketobject.close()函数中,将委​​托方法转换为虚方法.当send或sendto(不记得哪个)方法关闭时,FIN或RST被发送,客户端开始处理.

"由同行重置连接"似乎将责任归咎于服务,但我也不信任httplib2.客户可以有错吗?

**进一步调试 - 看起来像Linux上的服务器**

我有一台MacBook,所以我尝试在一台服务器和另一台客户端网站上运行服务.Linux客户端调用OS X服务器而没有错误(FIN ACK).OS X客户端使用错误调用Linux服务(RST ACK和a(54,'由peer重置连接')).所以,看起来它是在Linux上运行的服务.是x86_64吗?一个坏的glibc?的wsgiref?还在寻找...

**进一步测试 - wsgiref看起来很脆弱**

我们已经使用Apache和mod_wsgi进行生产,连接重置已经消失.请参阅下面的答案,但我的建议是记录连接重置并重试.这将使您的服务器在开发模式下运行正常,并且可以稳定地投入生产.

python sockets wsgi werkzeug httplib2

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

如何强制程序看起来内存不足?

我有一个C/C++程序,可能会在内存不足时挂起.我们通过同时运行多个副本来发现这一点.我想在不破坏开发机器性能的情况下调试程序.有没有办法限制可用的内存,以便新的或malloc将返回一个NULL指针,比如说,请求500K的内存?

c++ linux debugging memory-management

29
推荐指数
3
解决办法
3534
查看次数

PHP中的文档是否有标准样式?

我是PHP开发的新手,我想知道社区是否有任何关于使用注释的代码内联文档的指南.我喜欢像Python的PEP 257这样的东西,但我会选择一种流行的文档提取工具使用的格式,甚至是流行产品的文档标准.

php documentation

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

如何在没有共同历史记录的情况下重新集成svn和git存储库?

我有一个基于github的git存储库,它代表某个点的开发,然后是一个没有用git svn初始化的svn存储库,它有进一步的开发.我想将svn更改带入git存储库,开始使用git repo进行开发,并使用git svn dcommit推送更改.这可能吗?这是可取的吗?

这是我的具体内容:

我们在这里开始使用WordPress插件进行开发:

http://github.com/mrdoornbos/wpconfidentcaptcha

Master在ef82b94a1232b44aae3e,github没有进一步的更改.

当我们接受wp-plugins.org的申请时,为我们创建了一个空的svn仓库:

http://svn.wp-plugins.org/wp-confident-captcha/trunk@278927

然后将某些修改过的文件复制到(r256425)中.进行了进一步的修改,最后一次是r278935.

我想要的是将SVN更改与git svn元数据一起应用于master.

这是我到目前为止(大约需要4分钟):

git clone git://github.com/mrdoornbos/wpconfidentcaptcha.git github_cc
cd github_cc
git svn init --stdlayout --prefix="svn/" http://svn.wp-plugins.org/wp-confident-captcha
git svn fetch --revision 256362:278935
Run Code Online (Sandbox Code Playgroud)

这将我的github树放在origin/master中,我的svn树放在svn/trunk中(以及它们自己/ svn分支中的所有标签).origin/master和svn/trunk之间没有共同的祖先.我不知道从哪里开始,或者是否有办法从svn/trunk获取更改到origin/master,以便两个repos的头部具有相同的文件,并让git svn dcommit from origin起源/主.

从一个新的github repo开始似乎是最直接的方式,我不会失去早期历史.但是,似乎应该有一种方法可以使用现有的github repo来完成这项工作.

(编辑:看起来这已经被问为如何在没有共同祖先的情况下合并两个分支?但是没有git filter-branch使其工作所需的示例.不像那个问题,这些是公共svn和git repos,所以答案是有效的脚本是可能的.)

git git-svn

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

如何在Django REST中序列化层次关系

我有一个Django模型,使用django-mptt分层,看起来像:

class UOMCategory(MPTTModel, BaseModel):
    """
        This represents categories of different unit of measurements.
    """
    name = models.CharField(max_length=50, unique=True)
    description = models.CharField(max_length=50, unique=True)
    parent = TreeForeignKey('self', null=True, blank=True, related_name='%(app_label)s_%(class)s_sub_uom_categories')
Run Code Online (Sandbox Code Playgroud)

现在的问题是我使用Django REST Framework创建了一个REST API; 如何确保父字段返回序列化数据?

这是Model Serializer:

class UOMCategorySerializer(BaseModelSerializer):
    """
    REST API Serializer for UOMCategory model
    """
    class Meta:
        model = UOMCategory
Run Code Online (Sandbox Code Playgroud)

python django serialization django-mptt django-rest-framework

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

如何从命令行打印截止日期?

我有一个即将到来的截止日期2011年11月1日,我想在每次在MacBook Pro上打开终端时打印截止日期.我已将此添加到我的.profile:

python -c "from datetime import date; print '%s days until deadline.' % (date(2011,11,1) - date.today()).days"
Run Code Online (Sandbox Code Playgroud)

146 days until deadline.每当我创建一个新的终端窗口时,都会打印出来.

这解决了我的需求,但我想知道其他语言中的单行是什么样的,或者是否有办法使用bash或标准的posix命令行工具来完成相同的任务.

bash date

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

用AES加密填充随机数据是否有好处?

使用AES加密时,必须将明文填充为密码块大小。大多数库和标准都使用填充,其中填充字节可以根据未填充的明文长度来确定。尽可能使用随机填充字节有好处吗?

我正在实现一种用于存储敏感的按用户和按会话数据的方案。数据通常是JSON编码的键值对,并且可能很短且重复。我正在寻求PKCS#5的指导,但我计划将AES用于加密算法,而不是DES3。我正在计划为每个数据项随机分配IV,并根据需要由用户ID和密码或会话ID确定一个密钥。

让我惊讶的是纯文本的PKCS#5填充方案。垫密文到8字节的数据块,1到8个字节被添加在末尾,用该填充字节内容反映的填充字节的数量(即010202030303,可达0808080808080808)。我自己的填充方案是在纯文本的开头使用随机字节,而纯文本的最后一个字符将是添加的填充字节数。

我的推理是,在AES-CBC模式下,每个块都是前一个块的密文的函数。这样,每个明文都将具有随机性元素,为我提供了另一层保护,使其免受已知的明文攻击以及IV和关键问题的侵害。由于预计我的纯文本会很短,因此我不介意将整个解密后的字符串保存在内存中,并从正面和背面切下填充。

一个缺点是相同的未填充明文,IV和密钥将导致不同的密文,从而使单元测试变得困难(但并非不可能-我可以使用伪随机填充生成器进行测试,而使用具有加密强度的生成器进行生产)。

另一个可能是,要强制执行随机填充,我必须至少添加两个字节-一个计数和一个随机字节。对于确定性填充,最小值为一个字节,可以与明文一起存储,也可以与密文包装一起存储。

由于像PKCS#5这样的备受赞誉的标准决定使用确定性填充,所以我想知道是否还有其他东西我错过了,或者我认为收益太高了。

cryptography aes

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

当我在Heroku中运行时,如何自定义Django设置?

我正在使用Heroku雪松堆来运行我的Django应用程序,当我在Heroku运行时,我希望有一个不同的配置,而不是我在本地运行时.现在,settings.py是我特定于Heroku的配置,我将local_settings.py用于非Heroku的东西,并使其不受版本控制.

但是,我想在settings.py中做类似的事情:

if in_heroku:
   CONFIG_VAL='this'
else:
   CONFIG_VAL='that'
Run Code Online (Sandbox Code Playgroud)

任何想法如何检测我在settings.py中的Heroku环境?

django heroku

0
推荐指数
1
解决办法
1233
查看次数