有人可以向我解释一下ubuntu 9.04中python的用途吗?
我正试图旋转virtualenv
,--no-site-packages
旗帜似乎与ubuntu无关.我安装virtualenv 1.3.3
了easy_install
(我已经升级到setuptools 0.6c9
),似乎安装了一切/usr/local/lib/python2.6/dist-packages
我假设在使用apt-get安装软件包时,它被放入/usr/lib/python2.6/dist-packages/
?
问题是,还有一个/usr/local/lib/python2.6/site-packages
只是坐在那里是空的.看起来(通过查看path
a virtualenv
),这是virtualenv用作备份的文件夹.因此,即使我想省略--no-site-packages
,我也无法从我的任何virtualenv访问我的本地系统包.
所以我的问题是:
virtualenv
指向其中一个dist-packages
?/usr/lib/python2.6/dist-packages
要么/usr/local/lib/python2.6/dist-packages/
/usr/lib/python2.6/site-packages
?那里什么都没有!/usr/local/lib/python2.6/dist-packages/
和更老版本(来自ubuntu repos/apt-get)/usr/lib/python2.6/dist-packages
,哪一个导入我import xyz
?我假设这是基于路径列表,是吗?easy_install
应该安装到哪里定义/usr/local/lib/python2.6/dist-packages
?pip
吗?感谢任何能够清除这一点的人!
2个问题:
请参阅以下详细信息:
class MyTest(models.Model):
parent = models.ForeignKey('self', null=True, blank=True, related_name='children')
name = models.CharField(max_length=50)
slug = models.SlugField(max_length=255, blank=True, unique=True)
owner = models.ForeignKey(User, null=True)
class Meta:
unique_together = ("parent", "name")
def save(self, *args, **kwargs):
self.slug = self.make_slug()
super(MyTest, self).save(*args, **kwargs)
def make_slug(self):
# some stuff here
return generated_slug
Run Code Online (Sandbox Code Playgroud)
注意:slug =也是唯一的!
class MyTestForm(forms.ModelForm):
class Meta:
model = MyTest
exclude = ('slug',)
def clean_name(self):
name = self.cleaned_data.get("name")
parent = self.cleaned_data.get("parent")
if parent is None:
# this doesn't work …
Run Code Online (Sandbox Code Playgroud) 我会尽可能地尝试简化这个.可以说我有以下内容:
class Person(models.Model):
name = models.CharField(max_length=255)
def getRealPerson(self):
# is there a better way to do this?
ret = None
try:
ret = self.worker
except:
try:
ret = self.retired
except:
ret = self
return ret
class Worker(Person):
salary = models.IntegerField(default=0)
class Retired(Person):
age = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)
这个例子对我想要的东西并不重要,请跟我一起去.这样做的目的是让我可以有一个主人员表来引用所有人.
理想情况下,我希望能够调用Person的视图,并以每种类类型的自定义方式列出每个特定的详细信息.我想使用自定义的inclusion_tag来执行此操作.
{% load people_extras %}
{% for person in people %}
{% show_person person %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
from django import template
@register.inclusion_tag('worker.html')
def show_worker(person):
return {'person':person}
@register.inclusion_tag('worker.html')
def …
Run Code Online (Sandbox Code Playgroud) 我已经看到了很多与此相关的问题...但我的代码适用于python 2.6.2并且无法在python 2.6.5上运行.我错误地认为整个atexit"通过这个模块注册的功能在程序被信号杀死时不被调用"这件事不应该在这里计算,因为我正在捕捉信号然后干净地退出?这里发生了什么?什么是正确的方法来做到这一点?
import atexit, sys, signal, time, threading
terminate = False
threads = []
def test_loop():
while True:
if terminate:
print('stopping thread')
break
else:
print('looping')
time.sleep(1)
@atexit.register
def shutdown():
global terminate
print('shutdown detected')
terminate = True
for thread in threads:
thread.join()
def close_handler(signum, frame):
print('caught signal')
sys.exit(0)
def run():
global threads
thread = threading.Thread(target=test_loop)
thread.start()
threads.append(thread)
while True:
time.sleep(2)
print('main')
signal.signal(signal.SIGINT, close_handler)
if __name__ == "__main__":
run()
Run Code Online (Sandbox Code Playgroud)
python 2.6.2:
$ python halp.py
looping
looping
looping …
Run Code Online (Sandbox Code Playgroud) django ×2
python ×2
atexit ×1
django-forms ×1
inheritance ×1
setuptools ×1
signals ×1
ubuntu ×1
virtualenv ×1