表单: PythonNotes
用户: dreamable
创建日期: 2023-05-19 09:11:00 UTC
更新日期: 2023-05-24 07:26:00 UTC
引用:(Table ID 14, Record ID 3)

标题 :
目录名改变后venv必须重新初始化
笔记 :

我将engine_py3重新命名为engine后,不工作了!python转为了系统的py2。

必须重新初始化venv环境。例如

python3.8 -m venv env

这是因为,路径被写进去了。

./pyftmerge:#!/home/netro/codes/chao_dev/engine_py3/env/bin/python3.8
./f2py3:#!/home/netro/codes/chao_dev/engine_py3/env/bin/python3.8
./activate.fish:set -gx VIRTUAL_ENV "/home/netro/codes/chao_dev/engine_py3/env"
./activate:VIRTUAL_ENV="/home/netro/codes/chao_dev/engine_py3/env"
./hyper:#!/home/netro/codes/chao_dev/engine_py3/env/bin/python3.8
./ttx:#!/home/netro/codes/chao_dev/engine_py3/env/bin/python3.8
./pyrsa-verify:#!/home/netro/codes/chao_dev/engine_py3/env/bin/python3.8
./futurize:#!/home/netro/codes/chao_dev/engine_py3/env/bin/python3.8
./activate.csh:setenv VIRTUAL_ENV "/home/netro/codes/chao_dev/engine_py3/env"
./pyrsa-sign:#!/home/netro/codes/chao_dev/engine_py3/env/bin/python3.8
./fixup_translate_v3beta1_keywords.py:#!/home/netro/codes/chao_dev/engine_py3/env/bin/python3.8

可见activate中写死了路径。

改变后,找不到了。有些stupid。可以用链接,例如 ln -s engine_py3 engine。可以work

标签:
表单: PythonNotes
用户: dreamable
创建日期: 2021-03-16 01:10:44 UTC
更新日期: 2021-03-16 01:11:23 UTC
引用:(Table ID 14, Record ID 2)

标题 :
Python3 + MongoDB bug
笔记 :

遇到一个奇怪的问题,在Python3中,调用MongoDB。Sorting会影响结果。

基本代码

   order = pymongo.DESCENDING if self.descending else pymongo.ASCENDING
   items = self.tb.find(cond).sort(self.uid,order).limit(self.limit)
   logging.info(f"There are {items.count()} items")
   for idx,t in enumerate(items):
      logging.info(f"Working on {idx}-th item: {t[self.uid]}")

问题:

  1. 当order为descending,limit> # of records, hang after 100 records
  2. 当order为ascending的时候,问题不存在
  3. 当limit <= # of records时候,问题不存在
  4. 只对一个collection有此问题,其它类似collection没有此问题
  5. 存在{uid: -1}的index,添加{uid:1}的index无帮助

找不到原因,可能是某个地方的bug。采用ascending order绕开了这个问题。

标签:
表单: PythonNotes
用户: dreamable
创建日期: 2020-11-23 23:50:21 UTC
更新日期: 2020-12-02 23:47:54 UTC
引用:(Table ID 14, Record ID 1)

标题 :
cython
笔记 :
  1. python vs cpython vs cython

    • python: 语言
    • cpython: Python的解释器,用C实现的,也有用Java实现的Jython
    • cython:优化器,将python编译为C语言,提高运行速度
      • superset language
      • python + C extension
  2. install (version 0.29.21)

    sudo pip install cython
    
  3. setup.py

    from setuptools import setup
    from Cython.Build import cythonize
    setup(
    name='Hello world app',
    ext_modules=cythonize(["hello.py","utils.py","config.py"],annotate=True),
    zip_safe=False,
    )
    
    python setup.py build_ext --inplace
    
    • build error
    • in ~/engine: ERROR: error: [Errno 2] No such file or directory: 'engine/hello.so'
    • in ~/engine/tmp: OK
    • in `~/engine2': OK
    • remove __init__.py solves the problem.
标签: