小编int*_*tar的帖子

Python代码组织问题:鸡蛋+软件包+构建+单元测试+ SVN

我有几个共享常见模块的python项目.到现在为止,我已经......咳嗽......保留公共代码的多个副本并手动同步.但我显然更愿意做别的事情.

它现在在我看来,好像zc.Buildout可能是我需要的.我想我应该做的是将我系统的每个可重用组件放入一个单独的egg中,然后使用buildout将它们组装到项目中.

我也在想,对于任何特定的模块,我应该将单元测试放入一个单独的包或蛋中,这样我就不会在每个项目中安装组件的单元测试副本.我只想在我的库开发的地方进行单元测试,而不是在刚刚使用的地方.

所以也许我想要这样的东西

projects
  lib1
    tests
    code
  lib2
    tests
    code
  app1
    tests 
    appcode
  app2
    tests
    appcode
Run Code Online (Sandbox Code Playgroud)

等等

app1和app2都是独立的应用程序,有自己的代码和测试,但也包括和使用lib1和lib2.和lib1/test,lib1/code,lib2/test,lib2code,app1,app2是分开的鸡蛋.这听起来不错吗?

但是,我现在感到困惑.我假设当我开发app1时,我希望buildout将lib1,lib2和app1的副本放到一个单独的工作目录中,而不是直接将这些库的副本放在app1下.但是,这如何与我的SVN源代码控制一起使用?如果使用buildout动态构造工作目录,它不能是一个实时SVN目录,我可以从中检查更改回存储库?

我是否误解了如何使用buildout?我会更好地采用完全不同的方法吗?如何在项目之间混合源代码控制和模块重用?

更新:感谢两位目前已回答此问题的人.我正在尝试更多这个.

python svn egg code-organization buildout

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

在Django settings.py中导入文件时出现问题

我有一个Django项目似乎与settings.py工作得很好,它也导入了local_settings.py而没有问题.

我现在在设置文件的末尾添加了以下行:

try:
    from extras import *
except ImportError, e:
    print "import extras failed :: " + `e`
Run Code Online (Sandbox Code Playgroud)

extras.py是一个额外配置信息的文件,与settings.py和local_settings.py位于同一目录中,但是,我现在得到:

import extras failed :: ImportError('Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.',)
Run Code Online (Sandbox Code Playgroud)

这似乎是由于我试图

from django.contrib.auth.models import User,UserManager
from django.db import models
Run Code Online (Sandbox Code Playgroud)

在那个extras.py文件中.

有人有主意吗?

干杯

django configuration

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

Python正则表达式通过两个分隔符之一拆分字符串

我想剪切一串电子邮件地址,这些地址可以用逗号和空格的任意组合分隔.

而且我认为这很简单:

sep = re.compile('(\s*,*)+')
print sep.split("""a@b.com, c@d.com

   e@f.com,,g@h.com""")
Run Code Online (Sandbox Code Playgroud)

但事实并非如此.我找不到一个不会留下像这样的空槽的正则表达式:

['a@b.com', '', 'c@d.com', '', 'e@f.com', '', 'g@h.com']
Run Code Online (Sandbox Code Playgroud)

我尝试了各种组合,但似乎都没有.事实上,这是否可能与正则表达式一起?

python regex

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

Django自定义查询集过滤器

在Django中,是否有为QuerySet编写复杂的自定义过滤器的标准方法?

正如我可以写的那样

MyClass.objects.all().filter(field=val)
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情:

MyClass.objects.all().filter(customFilter)
Run Code Online (Sandbox Code Playgroud)

我可以使用生成器表达式

(x for x in MyClass.objects.all() if customFilter(x))
Run Code Online (Sandbox Code Playgroud)

但这会失去可链接性以及QuerySets提供的任何其他功能.

python django generator-expression django-queryset

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


如何从另一个目录运行 Python pipenv?

我有一个项目,现在我想使用 pipenv。

我想从我的主 bin 目录对它进行符号链接,这样我就可以从另一个目录(它与本地文件交互的地方)运行它,但仍然使用适当安装的文件在 pipenv 中运行它。

我可以做类似的事情吗

pipenv run python /PATH/TO/MY/CODE/foo.py localfile.conf
Run Code Online (Sandbox Code Playgroud)

或者它不会选择 /PATH/TO/MY/CODE/Pipenv 中定义的 pipenv ?

python pipenv

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

Python元类

我一直在使用Python破解类:

def hack(f,aClass) :
  class MyClass(aClass) :
     def f(self) :
       f()
  return MyClass

A = hack(afunc,A)
Run Code Online (Sandbox Code Playgroud)

这看起来很干净.它需要一个类,A,创建一个派生自它的新类,它有一个额外的方法,调用f,然后将新类重新分配给A.

这与Python中的元类黑客有何不同?使用元类比这有什么好处?

python metaclass

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

Python可以编译为在V8引擎上运行吗?

据推测,Javascript被编译为某种字节码以在V8引擎上运行?Python是否是一种类似的语言,我们可以想象Python被编译为相同的字节码并在V8上运行?

任何试图这样做的项目?

python v8

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

我可以一起使用Python的curses和cmd库吗?

在Python中,我想同时使用cmd和curses编写一个终端程序。使用cmd接受和解码完整的输入行,但使用curses定位输出。

像这样将curses和cmd的示例混在一起:

import curses 
import cmd

class HelloWorld(cmd.Cmd):
    """Simple command processor example."""

    def do_greet(self, line):
        screen.clear()
        screen.addstr(1,1,"hello "+line)
        screen.addstr(0,1,">")
        screen.refresh()

    def do_q(self, line):
        curses.endwin()
        return True

if __name__ == '__main__':
    screen = curses.initscr()   
    HelloWorld().cmdloop()
Run Code Online (Sandbox Code Playgroud)

我发现打字时什么也没看到。在屏幕上显示任何内容之前,curses可能正在等待刷新。我可以切换到使用getch(),但是那样我会失去cmd的值。

有没有办法使它们一起工作?

python curses cmd

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

寻找使用缩进块结构的Jison语法的例子

有没有人有一个简单的例子,说明如何使用Jison定义一个解析类似python的缩进的语法?

grammar indentation jison

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