小编PDi*_*lta的帖子

Flask"错误:提供的文件/路径似乎不存在",尽管该文件确实存在

我使用export FLASK_APP=flask_app然后做flask run但我得到错误:

错误:提供的文件/路径(flask_app)似乎不存在.请验证路径是否正确.如果app不在PYTHONPATH上,请确保扩展名为.py

但是,该文件确实存在,甚至在当前工作目录中.使用文件的完整路径也不起作用.

python file-not-found python-import flask

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

PyCUDA和NumbaPro CUDA Python有什么区别?

我是CUDA的新手,我正在试图弄清楚PyCUDA(免费)NumbaPro CUDA Python(非免费)对我来说会更好(假设图书馆成本不是问题).

两者似乎都要求您使用各自的Python方言.但是,似乎PyCUDA要求你在C代码中编写一个内核函数,这比使用NumbaPro更麻烦,NumbaPro似乎为你做了所有艰苦的工作.

确实如此吗?会有显着的性能差异吗?

python cuda pycuda numba numba-pro

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

如何使用 cygdb 调试 cython?

如果按照Cython 调试文档中指定的那样使用 python2.7 配置它,则在从源代码构建 gdb 后,可以使用 gdb 调试 Python3/Cython 项目。

但是,文档中的示例:

  1. 有时是模糊的(例如,代码应该使用 python3 构建,调试器使用 python2 运行,但我发现python-gdb实际上链接到python2......那么它是如何工作的?)
  2. 不完整(代码块中涵盖了一些步骤,文本中模糊地提到了其他步骤)
  3. 不一致(例如同时引用source.pyxmyfile.pyx

此外,它:

  1. 没有考虑虚拟环境的使用
  2. 似乎假设该main函数驻留在 .pyx 中(但我的函数驻留在常规main.py
  3. 不指定当您的文件位于不同目录中时要执行的操作(例如像 mymain.pycythonCode.pyxdo )

有人可以解释一下(最好有工作示例)如何在涉及刚才提到的所有 3 点的情况下调试 Python3/Cython 项目吗?

目前看来我实际上可以按照这篇Cython wiki 文章让 DDD 工作,但后来我发现这是“旧”的做法,它指的是我也链接到的当前调试文档。然而,目前我还不清楚“新”方法如何发挥作用(旧方法对我来说更有意义),而且让它发挥作用似乎更复杂。

python debugging gdb cython ddd-debugger

11
推荐指数
0
解决办法
963
查看次数

将转义字符写入文件以使该字符可见

我想将“\t”写入文件。不是“制表符”,而是字面上的“\t”。我该怎么做呢?这已经让我发疯了一个多小时了;我尝试的所有操作都会产生一个实际的“制表符”(空白)。

我为什么想要这个?因为我正在使用 ConfigParser() 生成一个配置文件,其中还包含一些分隔符,并且我希望该文件是人类可读的。我不认为空白是可读的。

编辑:抱歉,问题不清楚:我想对包含字符串的变量执行此操作。所以写“\\t”不是一个选择。我必须将包含转义字符的变量的值写入文件,其方式在思想上等同于:

v = "\t"
write(v)
Run Code Online (Sandbox Code Playgroud)

不改变定义的情况v下(尽管对 的操作是可以的)定义为“\t”后,v似乎不可能更改为“\\t”。v

python escaping python-3.x

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

如何将 Cython 与 pytest 结合使用?

目标是将pytest单元测试框架用于使用 Cython 的 Python3 项目。这不是即插即用的事情,因为pytest默认情况下无法导入 Cython 模块。

一种不成功的解决方案是使用该pytest-cython插件,但它对我来说根本不起作用:

> py.test --doctest-cython
usage: py.test [options] [file_or_dir] [file_or_dir] [...]
py.test: error: unrecognized arguments: --doctest-cython
  inifile: None
  rootdir: /censored/path/to/my/project/dir
Run Code Online (Sandbox Code Playgroud)

要验证我是否已安装该软件包:

> pip freeze | grep pytest-cython
pytest-cython==0.1.0
Run Code Online (Sandbox Code Playgroud)

更新:我正在使用 PyCharm,它似乎没有使用我的 pip 安装的软件包,而是使用我的项目使用的软件包的自定义(?)pycharm 存储库。一旦我添加pytest-cython到该存储库,该命令就会运行,但奇怪的是它无论如何都无法识别 Cython 模块,尽管包/附加组件是专门为此目的而设计的:

> pytest --doctest-cython
Traceback:
tests/test_prism.py:2: in <module>
    from cpc_naive.prism import readSequence, processInput
cpc_naive/prism.py:5: in <module>
    from calculateScore import calculateScore, filterSortAlphas, 
calculateAlphaMatrix_c#, incrementOverlapRanges  # cython code
E   ImportError: No module …
Run Code Online (Sandbox Code Playgroud)

unit-testing cython pytest pycharm python-3.x

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

pytest 在导入时找不到模块,但代码运行良好

目标是为使用 Cython 的 Python3 项目使用 pytest 单元测试框架。这不是即插即用的事情,因为默认情况下 pytest 无法导入 Cython 模块。也就是说,从 Cython .pyx 模块导入时出现以下错误,在我的例子中名为“calculateScore”:

package/mainmodule.py:5: in <module>
    from calculateScore import some_functions
E   ImportError: No module named 'calculateScore'
Run Code Online (Sandbox Code Playgroud)

使用pytest-runnerpytest-cython方法时都会出现此问题。奇怪的是,当您不尝试使用pytest. 将导入样式更改为import calculateScoreimport package.calculateScore没有帮助。

cython pytest python-3.x

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

我应该使用def,cdef还是cpdef定义我的Cython函数以获得最佳性能?

假设我想要最佳性能,我怎么知道在定义Cython函数时是使用def,cdef还是cpdef?

function definition cython function-definition

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

Numpy / Python中基本数学运算的速度:为什么整数除法最慢?

EDIT2:正如@ShadowRanger指出的那样,这是一种Numpy现象,而不是Python。但是,当在Python中使用列表推导进行计算(因此x+y变为[a+b for a,b in zip(x,y)])时,所有算术运算仍会花费同样长的时间(尽管是Numpy的100倍以上)。但是,当我在真实的仿真中使用整数除法时,它们的运行速度会更快。因此,主要问题仍然存在:即使在Python中,为什么这些测试表明整数除法没有比常规除法更快?

EDIT1:版本:Python 3.5.5,Numpy 1.15.0。

似乎在Python Numpy中,整数除法比(整数的)正规除法昂贵,这是违反直觉的。测试时,我得到以下信息:

setup_string = 'import numpy as np;\
                N=int(1e5);\
                x=np.arange(1,N+1, dtype=int);\
                y=np.arange(N, dtype=int);'
Run Code Online (Sandbox Code Playgroud)

加法(+)〜0.1s

timeit("x+y", setup=setup_string, number=int(1e3))
0.09872294100932777
Run Code Online (Sandbox Code Playgroud)

减法(-)〜0.1s

timeit("x-y", setup=setup_string, number=int(1e3))
0.09425603999989107
Run Code Online (Sandbox Code Playgroud)

乘法(*)〜0.1s

timeit("x*y", setup=setup_string, number=int(1e3))
0.09888673899695277
Run Code Online (Sandbox Code Playgroud)

除(/)〜0.35s

timeit("x/y", setup=setup_string, number=int(1e3))
0.3574664070038125
Run Code Online (Sandbox Code Playgroud)

整数除(//)〜1s(!)

timeit("x//y", setup=setup_string, number=int(1e3))
1.006298642983893
Run Code Online (Sandbox Code Playgroud)

任何想法为什么会这样?为什么整数除法不快?

python performance numpy integer-division integer-arithmetic

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

将函数应用于data.frame中的每个元素并返回data.frame

更新:之前,我使用paste函数作为示例而不是任意myFun函数.这个问题稍微容易一些,因为paste实际上可以对矢量进行操作,而myFun不能.

我想将自己的函数元素应用于data.frame中的每个元素,并将修改后的data.frame作为返回值.

例:

> df <- data.frame(c(1,2,3), c(2,3,4))
> df
  c.1..2..3. c.2..3..4.
1          1          2
2          2          3
3          3          4
> df_x <- magical_apply_function(df, function(x) myFun
> df_x
  c.1..2..3. c.2..3..4.
1         myFun(1)         myFun(2)
2         myFun(2)         myFun(3)
3         myFun(3)         myFun(4)
Run Code Online (Sandbox Code Playgroud)

我完全不知道无法在互联网上的任何地方找到这个问题的答案.大多数资源谈apply,lapplysapply但那些只工作在矢量/列表和它们只返回列表.

for循环真的是唯一的方法吗?

element r apply dataframe

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

如何使用numpy.round避免不正确的舍入?

我正在使用浮点数.如果我做:

import numpy as np
np.round(100.045, 2)
Run Code Online (Sandbox Code Playgroud)

我明白了:

Out[15]: 100.04
Run Code Online (Sandbox Code Playgroud)

显然,这应该是100.05.我知道IEEE 754的存在,并且浮点数的存储方式是导致这种舍入误差的原因.

我的问题是:我怎样才能避免这个错误?

python floating-point numpy rounding-error rounding

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

TypeError:在 PyCharm 中调试使用 Cython 的 Python3 代码时,NoneType 不可调用

project
|-main.py
|-cythonCode.pyx
Run Code Online (Sandbox Code Playgroud)

main.py文件从 导入函数cythonCode.pyx。定期运行程序工作正常,但调试它会导致以下异常:

(...)
File "<censored>/project/main.py", line 5, in <module>
    from cythonCode import *
  File "project/cythonCode.pyx", line 5, in init cythonCode
  File "project/cythonCode.pyx", line 5, in __Pyx_PyMODINIT_FUNC PyInit_cythonCode(void)
TypeError: 'NoneType' object is not callable
Run Code Online (Sandbox Code Playgroud)

怎么了?为什么调试器不能与 Cython 一起使用?

debugging cython pycharm python-3.x

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