我正在将一个Django应用程序部署到开发服务器,并在运行pip install requirements.txt时遇到此错误:
Traceback (most recent call last):
File "/var/www/mydir/virtualenvs/dev/bin/pip", line 5, in <module>
from pkg_resources import load_entry_point
ImportError: No module named pkg_resources
Run Code Online (Sandbox Code Playgroud)
pkg_resources似乎随setuptools一起分发.最初我认为这可能没有安装到virtualenv中的python所以我使用以下命令将setuptools(2.6,与Python相同的版本)安装到virtualenv中的Python站点包中
sh setuptools-0.6c11-py2.6.egg --install-dir /var/www/mydir/virtualenvs/dev/lib/python2.6/site-packages
Run Code Online (Sandbox Code Playgroud)
编辑这只发生在virtualenv中.如果我在virtualenv之外打开一个控制台,那么就存在pkg_resources
但我仍然得到同样的错误.关于为什么pkg_resources不在路径上的任何想法?
我正在写一个装饰器来应用于一个函数.它应该捕获任何异常,然后根据原始异常消息引发自定义异常.(这是因为suds抛出一个通用的WebFault异常,我从它的消息中解析Web服务抛出的异常并引发Python异常来镜像它.)
但是,当我在包装器中引发自定义异常时,我希望堆栈跟踪指向引发原始WebFault异常的函数.到目前为止,我提出了正确的异常(它动态地解析消息并实例化异常类). 我的问题:如何保持堆栈跟踪指向引发WebFault异常的原始函数?
from functools import wraps
def try_except(fn):
def wrapped(*args, **kwargs):
try:
fn(*args, **kwargs)
except Exception, e:
parser = exceptions.ExceptionParser()
raised_exception = parser.get_raised_exception_class_name(e)
exception = getattr(exceptions, raised_exception)
raise exception(parser.get_message(e))
return wraps(fn)(wrapped)
Run Code Online (Sandbox Code Playgroud) 我使用代理集作为环境变量(export http_proxy = example.com).对于使用urllib2的一个调用,我需要暂时禁用它,即.取消设置http_proxy.我已经尝试了文档和互联网中建议的各种方法,但到目前为止一直无法取消代理.到目前为止,我尝试过:
# doesn't work
req = urllib2.Request('http://www.google.com')
req.set_proxy(None,None)
urllib2.urlopen(req)
# also doesn't work
urllib.getproxies = lambda x = None: {}
Run Code Online (Sandbox Code Playgroud) 我正在使用CakePHP构建的法语网站.我已尝试多种功能尝试将文本转换为UTF-8并正确显示,但到目前为止没有成功 - 任何带重音的字母都显示为带有问号的黑色菱形.当我将浏览器中的字符集更改为ISO-8859-1时,它们会正确显示,但我想使while网站符合UTF-8标准.我用过:
html_entity_decode($ string,ENT_QUOTES,'UTF-8'); htmlspecialchars($ string,ENT_QUOTES,'UTF-8'); 函数utf8_encode
但没有雪茄.页面在标题中设置为UTF-8
MySQL数据库也使用UTF-8.如何在UTF-8中正确显示重音字符?
我用了
git reset --hard dc082bc...由于一些错误的提交,恢复到分支回到所需的先前状态.这让我当地的分公司很好.但是,我想将'origin'上的分支回滚到同一个commit,以便我可以重新开始.谁能告诉我如何将原始分支(非主人)恢复到此提交?
我已经尝试过git push origin master,但它给出了以下错误
! [rejected] branch -> branch (non-fast-forward) error: failed to push some refs to 'git@github.com:xxx/xxx.git' To prevent you from losing history, non-fast-forward updates were rejected Merge the remote changes before pushing again. See the 'Note about fast-forwards' section of 'git push --help' for details.
为noobish问题道歉,我对Python和Django都是全新的,并试图制作我的第一个应用程序.
我有一个简单的课程
class About(models.Model):
title = models.CharField(max_length=200)
description = models.TextField()
date = models.DateTimeField('date added')
Run Code Online (Sandbox Code Playgroud)
我添加了一条记录.我可以访问它
about = About.objects.filter(id=1)
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试使用点语法来访问其属性,我会收到以下错误
>>> about.title
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'QuerySet' object has no attribute 'title'
Run Code Online (Sandbox Code Playgroud)
我知道如何在模型中使用unicode来指定更好的返回值,例如
def __unicode__(self):
return self.title
Run Code Online (Sandbox Code Playgroud)
我应该使用它来将模型数据格式化为字典/列表吗?或者我只是完全错过了一些默认行为?
我有一个数组排序功能如下:
public function sortAscending($accounts)
{
function ascending($accountA, $accountB) {
if ($accountA['AmountUntilNextTarget'] == $accountB['AmountUntilNextTarget']) {
return 0;
}
return ($accountA['AmountUntilNextTarget'] < $accountB['AmountUntilNextTarget']) ? -1 : 1;
}
usort($accounts, $ascending);
return $accounts;
}
Run Code Online (Sandbox Code Playgroud)
显然,这并不理想,因为搜索密钥很难编码.我以为我会通过将键作为参数传递给外部函数来使这个泛型,但是这在内部函数中是超出范围的.我试图通过使用一个闭包来解决这个问题,它可以访问param,而不是内部函数,如下所示:
public function sortAscending($accounts, $key)
{
$ascending = function($accountA, $accountB) {
if ($accountsA[$key] == $accountB[$key]) {
return 0;
}
return ($accountA[$key] < $accountB[$key]) ? -1 : 1;
}
usort($accounts, $ascending);
return $accounts;
}
Run Code Online (Sandbox Code Playgroud)
但是usort()只接受函数名,所以这不起作用.任何人都可以看到(更好?)实现这一目标的方式?
我正在编写一个简单的Python脚本来重命名目录中的所有文件,用连字符替换文件名中的所有空格.我有以下崩溃在os.rename上
import os
path = os.getcwd()
filenames = os.listdir(path)
for filename in filenames:
os.rename(os.path.join(path + filename), os.path.join(path + filename.replace(" ", "-")))
Run Code Online (Sandbox Code Playgroud)
在控制台中给出错误:
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
OSError: [Errno 2] No such file or directory
Run Code Online (Sandbox Code Playgroud)
有关为什么会发生这种情况的任何想法?
我目前正在玩一本名为Violent Python的例子.你可以在这里看到我的实现
我现在正在尝试在Go中实现相同的脚本以比较性能,请注意我对Go来说是全新的.打开文件并遍历这些行很好,但是我无法弄清楚如何使用"加密"库以与Python的crypt.crypt(str_to_hash,salt)相同的方式对字符串进行散列.我觉得它可能就像
import "crypto/des"
des.NewCipher([]byte("abcdefgh"))
Run Code Online (Sandbox Code Playgroud)
但是,没有雪茄.任何帮助都会非常感激,因为将Go的并行性能与Python的多线程性能进行比较会非常有趣.