我试图整理一个使用python 3.2的简单c ++测试项目.该项目构建正常,但Py_Initialize引发致命错误:
Fatal Python error: Py_Initialize: unable to load the file system codec
LookupError: no codec search functions registered: can't find encoding
Run Code Online (Sandbox Code Playgroud)
最小代码:
#include <Python.h>
int main (int, char**)
{
Py_Initialize ();
Py_Finalize ();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
操作系统是32位Vista.
使用的python版本是一个python 3.2调试版本,使用VC++ 10从源代码构建.
来自同一版本的python_d.exe文件运行没有任何问题.
有人可以解释这个问题以及如何解决它吗?我自己的google-fu让我失望了.
编辑1
经过python源代码后,我发现,正如错误所说,没有注册编解码器搜索功能.这两个codec_register和PyCodec_Register是他们应该的.这就是代码中没有任何一个被调用的函数.
我真的不知道这意味着什么,因为我仍然不知道应该何时以及从何处调用这些函数.从我的其他python构建(3.1.3)的源代码中完全没有引发错误的代码.
编辑2
我在下面回答了我自己的问题.
互联网上有一些自动记忆库可用于各种不同的语言; 但不知道它们的用途,使用方法以及它们的工作原理,很难看出它们的价值.使用memoization有什么令人信服的论据,以及memoization特别闪耀的问题域是什么?这里特别感谢不知情的信息.
有没有办法避免__init__在初始化时调用类,例如从类方法?
我试图在Python中创建一个案例和标点符号不敏感的字符串类,用于有效的比较目的但是在没有调用的情况下创建新实例时遇到了问题__init__.
>>> class String:
def __init__(self, string):
self.__string = tuple(string.split())
self.__simple = tuple(self.__simple())
def __simple(self):
letter = lambda s: ''.join(filter(lambda s: 'a' <= s <= 'z', s))
return filter(bool, map(letter, map(str.lower, self.__string)))
def __eq__(self, other):
assert isinstance(other, String)
return self.__simple == other.__simple
def __getitem__(self, key):
assert isinstance(key, slice)
string = String()
string.__string = self.__string[key]
string.__simple = self.__simple[key]
return string
def __iter__(self):
return iter(self.__string)
>>> String('Hello, world!')[1:]
Traceback (most recent call last):
File "<pyshell#2>", line 1, …Run Code Online (Sandbox Code Playgroud) 过去已经进行了许多尝试以在Python中添加超时功能,以便在指定的时间限制到期时,等待代码可以继续.不幸的是,以前的配方要么允许运行功能继续运行并消耗资源,要么使用特定于平台的线程终止方法来终止该功能.这个wiki的目的是为这个问题开发一个跨平台的答案,许多程序员不得不为各种编程项目解决这个问题.
#! /usr/bin/env python
"""Provide way to add timeout specifications to arbitrary functions.
There are many ways to add a timeout to a function, but no solution
is both cross-platform and capable of terminating the procedure. This
module use the multiprocessing module to solve both of those problems."""
################################################################################
__author__ = 'Stephen "Zero" Chappell <Noctis.Skytower@gmail.com>'
__date__ = '11 February 2010'
__version__ = '$Revision: 3 $'
################################################################################
import inspect
import sys
import time
import multiprocessing
################################################################################
def add_timeout(function, limit=60):
"""Add a …Run Code Online (Sandbox Code Playgroud) 最近我发现我公司的一位朋友共同拥有4D,这是我以前从未听说过的.他们发誓,但他们是非技术性的,他们对此的看法听起来像是记忆的营销模糊.不幸的是,4D网站似乎也没有任何实际信息,而是充满了"综合","解决方案","平台"和"集成"等字样.
既然这个东西相当昂贵并且使用了我不太愿意只为一个项目学习的自定义语言,我对它很谨慎,我想知道是否有人有过这方面的经验?你会推荐吗?到底有什么好处呢?通过学习程序员或将其作为公司使用,我将获得哪些竞争优势?
我想将我的数据库连接传递给EchoHandler类,但我根本无法弄清楚如何执行此操作或访问EchoHandler类.
class EchoHandler(SocketServer.StreamRequestHandler):
def handle(self):
print self.client_address, 'connected'
if __name__ == '__main__':
conn = MySQLdb.connect (host = "10.0.0.5", user = "user", passwd = "pass", db = "database")
SocketServer.ForkingTCPServer.allow_reuse_address = 1
server = SocketServer.ForkingTCPServer(('10.0.0.6', 4242), EchoHandler)
print "Server listening on localhost:4242..."
try:
server.allow_reuse_address
server.serve_forever()
except KeyboardInterrupt:
print "\nbailing..."
是否有一个模块,我的搜索无法发现,将允许编写如下代码?想要编写这样的代码的原因并不重要.我所追求的是一些代码,它有一个简单的API来生成公钥和私钥字节密钥,并使用这些密钥轻松编码和解码数据.
import module, os
method, bits, data = 'RSA', 1024, os.urandom(1024)
public, private = module.generate_keys(method, bits)
assert isinstance(public, bytes) and isinstance(private, bytes)
assert module.decode(module.encode(data, private), public) == data
assert module.decode(module.encode(data, public), private) == data
Run Code Online (Sandbox Code Playgroud)
大多数似乎可用的东西需要下载一个包,并且只能在Python 2.x上运行.查找使用PEM文件或其他类型证书的库也很常见.我想避免处理这些文件,动态生成公钥和私钥,并快速处理内存中的数据.
最近Python中的某种情况让我感到震惊,经过一番研究后,其原因仍然不完全清楚.以下类定义似乎完美无缺,并将产生预期的内容:
class A: __slots__ = 'a', 'b'
class B(A): __slots__ = ()
class C(A): __slots__ = ()
class D(B, C): __slots__ = ()
Run Code Online (Sandbox Code Playgroud)
这些是以钻石继承模式排列的四个类.但是,不允许有些类似的模式.以下类定义看起来好像它们的功能与第一个相同:
class B: __slots__ = 'a', 'b'
class C: __slots__ = 'a', 'b'
class D(B, C): __slots__ = ()
Traceback (most recent call last):
File "<pyshell#74>", line 1, in <module>
class D(B, C): __slots__ = ()
TypeError: multiple bases have instance lay-out conflict
Run Code Online (Sandbox Code Playgroud)
但是,TypeError在此示例中引发了a .因此出现了三个问题:(1)考虑到插槽名称,这是Python中的错误吗?(2)这样的答案有什么理由?(3)最好的解决方法是什么?
参考文献:
似乎我的某个项目需要使用四叉树,这是我以前从未使用过的.从我所看到的,他们应该允许大量的性能增强,而不是蛮力尝试解决问题.这些python模块中的任何一个都不错吗?
编辑1:有没有人知道比pygame wiki中提供的更好的实现?
编辑2:以下是其他人可能会发现Python中的路径寻找技术有用的一些资源.
我刚刚安装了tensorflow和keras.我有如下简单的演示:
from keras.models import Sequential
from keras.layers import Dense
import numpy
# fix random seed for reproducibility
seed = 7
numpy.random.seed(seed)
# load pima indians dataset
dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",")
# split into input (X) and output (Y) variables
X = dataset[:,0:8]
Y = dataset[:,8]
# create model
model = Sequential()
model.add(Dense(12, input_dim=8, init='uniform', activation='relu'))
model.add(Dense(8, init='uniform', activation='relu'))
model.add(Dense(1, init='uniform', activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Fit the model
model.fit(X, Y, nb_epoch=10, batch_size=10)
# evaluate the model
scores …Run Code Online (Sandbox Code Playgroud) python ×8
class ×2
performance ×2
4d-database ×1
asynchronous ×1
c++ ×1
constructor ×1
demo ×1
generics ×1
keras ×1
memoization ×1
process ×1
python-2.7 ×1
python-3.x ×1
quadtree ×1
slots ×1
socketserver ×1
timeout ×1