如何在每次重新创建.pyc文件时强制Django?

时间:2013-10-31 08:41:47

标签: python django git pycharm

我最近用git开始在PyCharm中使用Django。有时我遇到运行服务器的问题,它显示了我修复的一些错误。为了解决这个问题,我应该每次手动删除.pyc文件。并再次运行服务器。每当我编译源代码时,如何强制它两个覆盖.pyc文件?谢谢你的回答。

  

感谢@ jbat100和@ Leonardo.Z。我想到了。我通过了PYTHONDONTWRITEBYTECODE = 1。它起到了魔力的作用。但遗憾的是,我只能接受一个答案,希望@ jbat100不要生我的气。

3 个答案:

答案 0 :(得分:5)

由于Python 2.6可以通过将 -B 开关提供给Python解释器,或者通过设置 PYTHONDONTWRITEBYTECODE 环境变量来阻止Python编写.pyc或.pyo文件在运行翻译之前。

此设置可作为sys.dont_write_bytecode variable用于Python程序,Python代码可以更改值以修改解释器的行为。通过:Interpreter Changes

答案 1 :(得分:2)

Leonardo的anwer可能就是你要找的东西,但你也可以用shell删除.pyc个文件

find . -name "*.pyc" -exec rm -rf {} \;

还有一个Django snippet

import os
directory = os.listdir('.')
for filename in directory:
    if filename[-3:] == 'pyc':
        print '- ' + filename
        os.remove(filename)

您还可以查看用于编译python源的compileall实用程序,并提供强制重新编译的选项。

答案 2 :(得分:0)

我使用以下代码来实现:

import subprocess
subprocess.call('find . -name "*.py[co]" -delete', shell=True)

要将其用作 manage.py命令,您可以执行以下操作。

将此代码放入:<app_name>/management/commands/delete_pyc.py

from django.core.management.base import BaseCommand, CommandError

class Command(BaseCommand):    
    help = """Delete all .pyc/.pyo files"""    
    def handle(self, *args, **options):
        import subprocess
        subprocess.call('find . -name "*.py[co]" -delete', shell=True)

运行do:

python manage.py delete_pyc