2

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

感谢@jbat100 和@Leonardo.Z。我想到了。我通过 PYTHONDONTWRITEBYTECODE=1。它就像一种魔法。但遗憾的是我只能接受一个答案,我希望@jbat100 不会对我生气。

4

3 回答 3

5

由于 Python 2.6 可以通过向 Python 解释器提供-B开关或在运行解释器之前设置PYTHONDONTWRITEBYTECODE环境变量来防止 Python 写入 .pyc 或 .pyo 文件。

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

于 2013-10-31T08:50:49.410 回答
2

莱昂纳多的答案可能是您正在寻找的,但您也可以.pyc使用外壳删除文件

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

还有一个Django 片段也可以做到这一点

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

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

于 2013-10-31T08:51:19.490 回答
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)

要运行:

python manage.py delete_pyc
于 2018-06-06T11:31:29.820 回答