我有一些Python文件,我想将它们打包成exe并进行商业分发,但也要确保没有人能够看到这些文件的源代码......我听说过pyarmor模块,但它没有提供完全混淆..对此有任何帮助吗?
我听说过有关 Cython 和 Pyinstaller 的内容,但从未让它发挥作用。我看过很多关于如何首先将代码转换为 C 源代码,然后将其编译为 exe 的帖子,但这些都不适合我。这里有人愿意告诉我如何实现相同的目标吗?
我正在开发一个程序,该程序依赖于尽快迭代数百万个数据点。
我打算将此程序转换为独立的 exe,以便于使用和分发。
我一直在研究 numba 和 cython 作为尽可能加速我的程序的方法,但它们似乎都擅长不同的事情。
Numba 的局限性更大,但非常擅长迭代 numpy 数组,并且无需太多思考即可轻松实现。
平均而言,它似乎也比 Cython 更快,尤其是当数据集很大时。至少从我读到的来看。
Cython 比 numba 更难实现,但它是通用的,并且在大多数情况下几乎或同样快。
但我从未听说过有人将它们一起使用。
我正在考虑在方便且有用的情况下使用 Numba,而在其他地方则使用 Cython。
这是一个坏主意吗?我错过了什么吗?
我按照本教程在 Mac 上安装 Odoo 15,但在运行时遇到此错误pip install -r requirements.txt:
Error compiling Cython file:
------------------------------------------------------------
...
cdef load_traceback
cdef Waiter
cdef wait
cdef iwait
cdef reraise
cpdef GEVENT_CONFIG
^
------------------------------------------------------------
src/gevent/_gevent_cgreenlet.pxd:181:6: Variables cannot be declared with 'cpdef'. Use 'cdef' instead.
Run Code Online (Sandbox Code Playgroud)
我发现了几个解决 cython 错误的文档,但没有一个文档解决我遇到的特定异常。
我正在尝试在Cython中使用C结构,它定义了一个链表:
typedef struct {
struct query_result* next_result;
char* result;
} query_result;
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我在自己的定义中使用了query_result类型.按原样使用,在Cython中给出了编译器错误:
cdef extern from 'c_wrapper.h':
struct query_result:
struct query_result*
char*
Run Code Online (Sandbox Code Playgroud)
关于如何在Cython中正确处理这个递归定义的任何想法?
我终于得到了cython工作,感谢stackoverflow上的一些人,但现在有一个问题.从我不使用cdef到使用cdef时,确实没有速度增加.当我使用cython编译python代码时,不要误会我有一个非常明显的速度增加,但是当我使用cdef时并不是这样.
这是代码区域正在减慢程序的其余部分:
def tupdate(self,surf):
cdef int x
cdef int y
for x in xrange(self.w):
for y in xrange(self.h):
if self.map[(x,y)].y <= 600 and self.map[(x,y)].y >= -50: self.map[(x,y)].FLAG = 1
else: self.map[(x,y)].FLAG = 0
self.map[(x,y)].y += self.speed
if self.map[(x,y)].FLAG:
self.map[(x,y)].rect = ((self.map[(x,y)].x,self.map[(x,y)].y),(50,25))
self.map[(x,y)].update()
self.map[(x,y)].render(surf)
Run Code Online (Sandbox Code Playgroud)
这个代码应该每秒被调用60次,但由于代码的速度和我的旧硬件只能被调用大约每秒30次,我认为使用cdef这样强烈使用的变量如x和y会有所帮助.但是fde在cdef之前和之后都是一样的.
我使用的是32位python 2.7的Windows 7 64位
我试图将一些Python/Numpy代码转换为Cython以加快速度.这是我的代码:
cimport numpy as np
import numpy as np
from numpy import *
import pylab as pl
from pylab import *
from scipy import integrate
def myc_rb_e2f(np.ndarray[double,ndim=1] y = np.zeros(7),double t, double k,double d):
M = y[0]
E = y[1]
CD = y[2]
CE = y[3]
R = y[4]
RP = y[5]
RE = y[6]
cdef double S = 0.01
if t > 300.0:
S = 5.0
#if t > 400
#S = 0.01
cdef double t1 = k[0]*S/(k[7]+S)
cdef …Run Code Online (Sandbox Code Playgroud) 我必须从源代码构建lxml.https://github.com/lxml/lxml
正如文件/doc/build.txt所说,源代码应该提供预编译的.c文件.为什么我找不到它们?在/src/lxml那里只有.pyx文件.哪里.c文件?? ??
实际上我lxml.etree.c在python build命令期间有丢失的文件.
谢谢
def test():
return sorted([(a,b) for a in xrange(10) for b in xrange(10)],
key=lambda (x,y): x + y)
Run Code Online (Sandbox Code Playgroud)
上面是有效的python代码,但会触发cython错误。错误消息是Expected ')', found ','。
怎么了
Python 2.7,Cython 0.19.2
在Windows上安装Kivy的过程中,我发现我需要Cython.
easy_install cython,但这给出了以下错误:error: Unable to find vcvarsall.batpython setup.py install,我看到了同样的错误.我该如何安装Cython?没有这个'vcvarsall.bat'错误.
我正在运行Windows 32位.


我正在查看快速分数库,我发现了以前从未见过的这种cython语法:
an, ad = (<Fraction>a)._numerator, (<Fraction>a)._denominator
Run Code Online (Sandbox Code Playgroud)
什么是(<Fractions>a)代表?这似乎是某种内存分配.但是,我不确定.