小编sal*_*ane的帖子

如何使用cURL从GitHub下载tarball?

我试图使用cURL从GitHub下载tarball ,但它似乎没有重定向:

$ curl --insecure https://github.com/pinard/Pymacs/tarball/v0.24-beta2
<html><body>You are being <a href="https://nodeload.github.com/pinard/Pymacs/tarball/v0.24-beta2">redirected</a>.</body></html>
Run Code Online (Sandbox Code Playgroud)

注意:wget适合我:

$ wget --no-check-certificate https://github.com/pinard/Pymacs/tarball/v0.24-beta2
Run Code Online (Sandbox Code Playgroud)

但是我想使用cURL,因为最终我想用以下内容解压缩内联:

$ curl --insecure https://github.com/pinard/Pymacs/tarball/v0.24-beta2 | tar zx
Run Code Online (Sandbox Code Playgroud)

我发现重定向后的URL原来是https://download.github.com/pinard-Pymacs-v0.24-beta1-0-gcebc80b.tar.gz,但我希望cURL足够聪明才能计算出来这个.

linux curl wget github

86
推荐指数
3
解决办法
9万
查看次数

如何解决Django中跨数据库的外键缺乏支持

我知道Django不支持跨多个数据库的外键(最初是Django 1.3 docs)

但我正在寻找一种解决方法.

什么行不通

我在一个单独的数据库上有两个模型.

routers.py:

class NewsRouter(object):
    def db_for_read(self, model, **hints):
        if model._meta.app_label == 'news_app':
            return 'news_db'
        return None

    def db_for_write(self, model, **hints):
        if model._meta.app_label == 'news_app':
            return 'news_db'
        return None

    def allow_relation(self, obj1, obj2, **hints):
        if obj1._meta.app_label == 'news_app' or obj2._meta.app_label == 'news_app':
            return True
        return None

    def allow_syncdb(self, db, model):
        if db == 'news_db':
            return model._meta.app_label == 'news_app'
        elif model._meta.app_label == 'news_app':
            return False
        return None
Run Code Online (Sandbox Code Playgroud)

fruit_app/models.py中的模型1:

from django.db import models

class Fruit(models.Model):
    name …
Run Code Online (Sandbox Code Playgroud)

django django-models django-orm

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

Nginx将非www前缀域重写为www-prefixed域

我看到Nginx HttpRewriteModule文档有一个例子,用于将www前缀域重写为非www前缀域:

if ($host ~* www\.(.*)) {
  set $host_without_www $1;
  rewrite ^(.*)$ http://$host_without_www$1 permanent; # $1 contains '/foo', not 'www.mydomain.com/foo'
}
Run Code Online (Sandbox Code Playgroud)

如何反向 - 将非www前缀域重写为www前缀域?我想也许我可以做类似下面的事情,但Nginx不喜欢嵌套的if语句.

if ($host !~* ^www\.) {                       # check if host doesn't start with www.
    if ($host ~* ([a-z0-9]+\.[a-z0-9]+)) {    # check host is of the form xxx.xxx (i.e. no subdomain)
        set $host_with_www www.$1;
        rewrite ^(.*)$ http://$host_with_www$1 permanent;
    }
}
Run Code Online (Sandbox Code Playgroud)

此外,我希望这适用于任何域名,而无需明确告诉Nginx重写domain1.com - > www.domain1.com,domain2.com - > www.domain2.com等,因为我有大量的域要重写.

rewrite nginx url-rewriting

39
推荐指数
4
解决办法
5万
查看次数

如何获取所有Python标准库模块的列表

我想要sys.builtin_module_names除了标准库以外的东西.其他不起作用的东西:

  • sys.modules - 仅显示已加载的模块
  • sys.prefix - 一个包含非标准库模块EDIT的路径:并且似乎不能在virtualenv中工作.

我想要这个列表的原因是我可以将它传递给http://docs.python.org/library/trace.html--ignore-module--ignore-dir命令行选项trace

所以最终,我想知道如何在使用trace或时忽略所有标准库模块sys.settrace.

编辑:我希望它在virtualenv中工作.http://pypi.python.org/pypi/virtualenv

编辑2:我希望它适用于所有环境(即跨越操作系统,在virtualenv的内部和外部.)

python std virtualenv

37
推荐指数
6
解决办法
9852
查看次数

如何反转`git log --grep = <pattern>`或如何显示与模式不匹配的git日志

我想用来git log显示与给定模式不匹配的所有提交.我知道我可以使用以下内容来显示与模式匹配的所有提交:

git log --grep=<pattern>
Run Code Online (Sandbox Code Playgroud)

如何反转匹配感?

我试图忽略消息中"碰到版本..."的提交.

编辑:我希望我的最终输出非常详细.例如git log --pretty --stat.所以输出git log --format=oneline对我来说不起作用.

git git-log

34
推荐指数
3
解决办法
1万
查看次数

是否可以在Emacs中使用带有TRAMP的Ropemacs?

我最近安装了Ropemacs的hg tip版本,我想在使用TRAMP编辑远程文件时使用它.有没有人这样做过?当我尝试使用M-/完成变量名称时,我被要求输入Rope project root folder并输入:/ssh:myhost:/path/to/myproject/它会给我以下错误:

Opening [/ssh:myhost:/path/to/myproject/] project ... 
pymacs-report-error: Python: Traceback (most recent call last):
  File "/home/saltycrane/lib/python-environments/default/lib/python2.6/site-packages/Pymacs/pymacs.py", line 147, in loop
    value = eval(text)
  File "<string>", line 1, in <module>
  File "/home/saltycrane/lib/python-environments/default/lib/python2.6/site-packages/ropemode/decorators.py", line 53, in newfunc
    return func(*args, **kwds)
  File "/home/saltycrane/lib/python-environments/default/lib/python2.6/site-packages/ropemode/interface.py", line 254, in code_assist
    _CodeAssist(self, self.env).code_assist(prefix)
  File "/home/saltycrane/lib/python-environments/default/lib/python2.6/site-packages/ropemode/interface.py", line 538, in code_assist
    proposals = self._calculate_proposals()
  File "/home/saltycrane/lib/python-environments/default/lib/python2.6/site-packages/ropemode/interface.py", line 597, in _calculate_proposals
    self.interface._check_project()
  File "/home/saltycrane/lib/python-environments/default/lib/python2.6/site-packages/ropemode/interface.py", line 448, in _check_project
    self.open_project()
  File "/home/saltycrane/lib/python-environments/default/lib/python2.6/site-packages/ropemode/decorators.py", line …
Run Code Online (Sandbox Code Playgroud)

python emacs tramp ropemacs

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

在Python中使用字符串<128KB时内存泄漏?

原标题:Python内存泄漏打开文件<128KB?

原始问题

我在运行Python脚本时看到了我认为的内存泄漏.这是我的脚本:

import sys
import time


class MyObj(object):
    def __init__(self, filename):
        with open(filename) as f:
            self.att = f.read()


def myfunc(filename):
    mylist = [MyObj(filename) for x in xrange(100)]
    len(mylist)
    return []


def main():
    filename = sys.argv[1]
    myfunc(filename)
    time.sleep(3600)


if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

主函数调用myfunc()创建一个包含100个对象的列表,每个对象打开并读取一个文件.从返回后myfunc(),我期望从100项列表中读取内存并从读取文件中释放,因为它们不再被引用.但是,当我使用该ps命令检查内存使用情况时,Python进程使用的内存比从第12行和第13行注释掉的脚本运行的Python进程多大约10,000 KB.

奇怪的是,内存泄漏(如果它就是这样)似乎只发生在大小<128KB的文件中.我创建了一个bash脚本来运行此脚本,文件大小从1KB到200KB,当文件大小达到128KB时内存增加停止.这是bash脚本:

#!/bin/bash

echo "PID RSS S TTY TIME COMMAND" > output.txt

for i in `seq 1 200`;
do
    python debug_memory.py "data/stuff_${i}K.txt" &
    pid=$!
    sleep 0.1
    ps -e -O rss …
Run Code Online (Sandbox Code Playgroud)

python garbage-collection memory-leaks memory-management

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

Django:登录后使用查询字符串*重定向到上一页*

我正在使用django.contrib.auth并希望在登录后重定向到上一页.我想要类似以下内容:Django:登录后重定向到上一页, 重定向到的URL可以包含查询字符串.

目前我的模板中有以下链接:

<a href="{% url user_login %}?next={{ request.get_full_path }}">Login</a>
Run Code Online (Sandbox Code Playgroud)

user_login 是我的登录视图的名称.

我想使用{{ request.get_full_path }}而不是{{ request.path }}获取当前路径,包括查询字符串,但这将创建一个带有查询字符串(例如/login/?next=/my/original/path/?with=other&fun=query&string=parameters)中的查询字符串的URL,但不起作用.

我还尝试redirect_to在我的登录视图中添加一个参数,并将带有查询字符串的url作为arument传递给url模板标记.但是这给了我一个NoReverseMatch错误.

python django django-authentication

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

如何使用Flask测试模板上下文变量

Django的测试客户端返回一个测试Response对象,该对象包含用于呈现模板的模板上下文变量.https://docs.djangoproject.com/en/dev/topics/testing/#django.test.client.Response.context

在Flask中测试时如何访问模板上下文变量?

示例视图:

@pgt.route('/myview')
def myview():
    context = {
        'var1': 'value 1',
        'var2': 'value 2',
        'var3': 'value 3',
    }
    return render_template('mytemplate.html', **context)
Run Code Online (Sandbox Code Playgroud)

示例测试:

class MyViewTestCase(unittest.TestCase):
    def setUp(self):
        self.app = create_app()
        self.client = self.app.test_client()

    def test_get_success(self):
        response = self.client.get('/pgt/myview')

        # I don't want to do this
        self.assertIn('value 1', response.data)

        # I want to do something like this
        self.assertEqual(response.template_context['var1'], 'value 1')
Run Code Online (Sandbox Code Playgroud)

python flask

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

如何从类中的方法动态创建模块级函数

我试图从类中的方法动态创建模块级函数.因此,对于类中的每个方法,我想创建一个具有相同名称的函数,该函数创建类的实例,然后调用该方法.

我想这样做的原因是我可以采用面向对象的方法来创建Fabric文件.由于Fabric将调用模块级函数而不是类的方法,因此这是我的解决方法.

我使用以下链接让我开始

我提出了以下代码

import inspect
import sys
import types

class TestClass(object):
    def __init__(self):
        pass

    def method1(self, arg1):
        print 'method 1 %s' % arg1

    def method2(self):
        print 'method 2'

def fabric_class_to_function_magic(module_name):
    # get the module as an object
    print module_name
    module_obj = sys.modules[module_name]
    print dir(module_obj)

    # Iterate over the methods of the class and dynamically create a function
    # for each method that calls the method and add it to the current module
    for …
Run Code Online (Sandbox Code Playgroud)

python metaprogramming fabric

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

如何使用OR运算符创建等效于SQL查询的Django查询集?

在Django中,我知道使用filter多个参数会被转换为SQL AND子句.来自Django书:

您可以将多个参数传递给filter()以进一步缩小范围:

>>> Publisher.objects.filter(country="U.S.A.", state_province="CA")
[<Publisher: Apress>]
Run Code Online (Sandbox Code Playgroud)

这些多个参数被转换为SQL AND子句.因此,代码段中的示例转换为以下内容:

SELECT id, name, address, city, state_province, country, website
FROM books_publisher
WHERE country = 'U.S.A.'
AND state_province = 'CA';
Run Code Online (Sandbox Code Playgroud)

如何创建一个转换为SQL OR子句的Django查询集?例如:

SELECT id, name, address, city, state_province, country, website
FROM books_publisher
WHERE state_province = 'AZ'
OR state_province = 'CA'; 
Run Code Online (Sandbox Code Playgroud)

django django-models

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

如何在.gitignore中获得等效的.hgignore的正则表达式^ var /(?!\ log | .dummy)和^ var/log /(?!\.dummy)?

我正在将我的Mercurial存储库转换为Git.部分文件系统如下所示:

|-- .gitignore
|-- .hgignore
`-- var
    |-- .dummy
    |-- asdf
    `-- log
        |-- .dummy
        `-- asdf
Run Code Online (Sandbox Code Playgroud)

我的.hgignore文件使用正则表达式.我的.hgignore文件的一部分如下:

^var/(?!\log|.dummy)
^var/log/(?!\.dummy)
Run Code Online (Sandbox Code Playgroud)

我想跟踪.dummy文件而不是asdf文件.hg status收益:

? var/.dummy
? var/log/.dummy
Run Code Online (Sandbox Code Playgroud)

如何在.gitignore中获得相同的效果?我尝试过以下方法:

/var/**/*
!/var/.dummy
!/var/log/.dummy
Run Code Online (Sandbox Code Playgroud)

但这不会忽视var/asdf所希望的.如何跟踪var/.dummyvar/log/.dummy而忽略var/asdfvar/log/asdf

git mercurial gitignore hgignore

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