小编Sha*_*ism的帖子

将数据文件添加到python项目setup.py

我有一个这样的项目:

??? CHANGES.txt
??? LICENSE
??? MANIFEST.in
...
??? docs
?   ??? index.rst
??? negar
?   ??? Negar.py
?   ??? Virastar.py
?   ??? Virastar.pyc
?   ??? __init__.py
?   ??? data
?   ?   ??? __init__.py
?   ?   ??? untouchable.dat
?   ??? gui.py
?   ??? gui.pyc
?   ??? i18n
?   ?   ??? fa_IR.qm
?   ?   ??? fa_IR.ts
?   ??? negar.pro
??? setup.py
...
Run Code Online (Sandbox Code Playgroud)

在里面我的文件Virastar.py需要一些数据data.untouchable.dat.它工作正常,直到我用这个安装项目setup.py:

setup(
    ...
    include_package_data=True,
    packages = find_packages() + ['negar'],
    package_dir={'negar': 'negar'},
    package_data={'negar': ['data/*.dat']}, …
Run Code Online (Sandbox Code Playgroud)

python setuptools setup.py

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

在Django + uWsgi项目中运行时,PyMongo查找返回空/部分游标

我们使用Django&mongoDB(PyMongo驱动程序)开发了一个REST API .问题是,在对API端点的一些请求中,PyMongo游标返回一个部分响应,其中包含的文档少于应有的数量(但它是一个完全有效的JSON文档).

让我用我们的一个观点的例子来解释它:

def get_data(key):
    return collection.find({'key': key}, limit=24)

def my_view(request):
    key = request.POST.get('key')
    query = get_data(key)
    res = [app for app in query]
    return JsonResponse({'list': res})
Run Code Online (Sandbox Code Playgroud)

我们确信有超过8000个文档与查询匹配,但在某些调用中,我们得到的结果少于24个(甚至为零).我们调查的第一个问题是MongoClient我们的代码中有多个定义.通过解决这个问题,问题的发生次数减少了,但我们仍然在很多电话中都有这种情况.

在所有这些调查之后,我们设计了一个测试,其中我们同时向服务器发出了16个异步请求.通过这种方法,我们可以重现这个问题.在这16个请求中,每个请求中有6-8个具有部分结果.运行此测试后,我们将uWsgi进程数减少到6并重新启动服务器.所有结果都很好,但在服务器上施加了另一个重负载后,问题再次出现.此时,我们重新启动了uwsgi服务,一切都很好.通过最后一个实验,我们现在有一个线索,即当uwsgi服务开始运行时,一切正常,但经过一段时间和重负载后,服务器开始再次返回部分或空的结果.我们最近的调查是使用python manage.pywith 运行APIDEBUG=False在这种情况下,我们在一段时间后再次遇到问题.

我们无法弄清楚问题是什么以及如何解决.我们可以想到的一个原因是Django在完成之前关闭了pymongo的连接.因为返回的结果是有效的JSON.

我们的堆栈是:

  • nginx(未启用缓存)
  • uWsgi
  • MemCached(在调试过程中禁用)
  • Django(python 3上的v1.8)
  • PyMongo(v3.0.3)

非常感谢您的帮助.

更新:

Mongo版本:

db version v3.0.7
git version: 6ce7cbe8c6b899552dadd907604559806aa2e9bd
Run Code Online (Sandbox Code Playgroud)
  • 我们正在运行单个mongod实例.没有分片/复制.
  • 我们正在使用此代码段创建连接:

    con = MongoClient('localhost',27017)

更新2

Pymongo问题跟踪器中的主题线程.

django mongodb pymongo pymongo-3.x

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

如何捕获pyqt closeEvent并最小化对话框而不是退出?

我有一个QDialog对象.当用户单击X按钮或按下时Ctrl+Q,我希望对话框转到最小化视图或系统托盘图标,而不是关闭.我怎么做?

python pyqt qdialog pyqt4

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

String.maketrans用于英语和波斯语数字

我有这样的功能:

persian_numbers = '??????????'
english_numbers = '1234567890'
arabic_numbers  = '??????????'

english_trans   = string.maketrans(english_numbers, persian_numbers)
arabic_trans    = string.maketrans(arabic_numbers, persian_numbers)

text.translate(english_trans)
text.translate(arabic_trans)
Run Code Online (Sandbox Code Playgroud)

我希望它将所有阿拉伯语和英语数字翻译成波斯语.但Python说:

english_translate = string.maketrans(english_numbers, persian_numbers)
ValueError: maketrans arguments must have same length
Run Code Online (Sandbox Code Playgroud)

我试图用Unicode编码字符串,utf-8但我总是遇到一些错误!有时问题是阿拉伯字符串而不是!你知道更好的解决方案吗?

编辑:

似乎问题是ASCII中的Unicode字符长度.像'?'这样的阿拉伯数字 是两个角色 - 我发现了ord().长度问题从这里开始:-(

python python-2.7 python-unicode

6
推荐指数
4
解决办法
3805
查看次数

Python正则表达式从模式的某个位置替换

我有一个功能:

find = re.compile(ur"\s+(Word)\s+", flags = re.U)
text = find.sub('\1', text)
Run Code Online (Sandbox Code Playgroud)

我想找到一些像这样的模式“ Word”(带有前缀/后缀空格)并将其替换为“Word”(没有这些空格)。在红宝石中我之前用这样的东西做过:

text.gsub('\s+(Word)\s+', '\1')
Run Code Online (Sandbox Code Playgroud)

编辑:我的意思是我需要用新字符串或其他内容更改这些空格,具体取决于情况。

python regex

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

将命令从命令行发送到Unix中正在运行的Python脚本

我想构建一个可以在从另一个脚本运行时控制的脚本.例如,我想像这样运行我的脚本:

~: Server &
Run Code Online (Sandbox Code Playgroud)

并能够运行其中一个功能,如:

~: client func1
Run Code Online (Sandbox Code Playgroud)

在我搜索时,我发现信号模块有我想要的东西,但它的信号是预先定义的,我无法发送自己的信号.

我即使使用网络框架进行客户端/服务器实现,但我认为这对于我希望我的脚本具有的能力来说太过分了.

谢谢你们.

python unix client-server

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

在mongodb中获取具有相同属性的文档

我有一个包含这样的文档的集合:

[
  {
    "user_id": 1,
    "prefs": [
      "item1",
      "item2",
      "item3",
      "item4"
    ]
  },
  {
    "user_id": 2,
    "prefs": [
      "item2",
      "item5",
      "item3"
    ]
  },
  {
    "user_id": 3,
    "prefs": [
      "item4",
      "item3",
      "item7"
    ]
  }
]
Run Code Online (Sandbox Code Playgroud)

我想要的是编写一个聚合,它将得到一个user_id列表,其中包含映射到列表中相同数量的所有用户prefs。例如,如果我运行聚合user_id = 1,我必须得到:

[
  {
    "user_id": 2,
    "same": 1
  },
  {
    "user_id": 3,
    "same": 2
  }
]
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query aggregation-framework

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

将正则表达式匹配替换为应用函数的结果

我之前在ruby中做过类似的事情:

text.gsub!( SOME REGEX ) do |s|
    s.SOME_STRING_STUFF
end
Run Code Online (Sandbox Code Playgroud)

我知道在python中没有像rubys"do"这样的东西,但我无法弄清楚如何做那样的事情!

ruby python regex python-2.7

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

用python和附魔进行拼写检查

我希望在我的PyQt4项目中有一个拼写检查功能,看起来pyenchant是做这件事的好选择.这是完美的工作.但我想制作自己的单词词典并用它们提供模块.有可能吗?

之后,如何在其他想要使用原始程序的计算机上轻松地使用这个新词典呢?我不想让用户安装一些奇怪的程序和字典来使用我的简单程序.

PS:我在Linux系统上.

python python-2.7 pyenchant

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