如何强制python忽略或重新创建pyc / pyo文件?

时间:2013-11-30 20:03:16

标签: python multiprocessing

我正在开发一个使用多处理和进程池的科学python应用程序。有时我犯了一个错误,自己掏出炸弹。这导致我的笔记本电脑冻结,我需要进行硬重置。但是,当我再次加载时,我的python安装似乎已损坏。我在import string这样的基本导入上遇到了奇怪的错误。

我追溯到这一点,看起来python正在尝试为系统目录中安装的一些系统模块制作pyc / pyo(我在Windows中工作)。我可以通过点击安装目录暂时解决这个问题,按修改时间排序,并根据修改日期手动删除在该运行中创建的所有pyc / pyo。

有没有办法强制python忽略任何现有的pyc / pyos并在解释器的启动时重新创建它们?或者,在系统Python安装中删除所有 pyc / pyo对象是否安全?在我的情况下是C:\Python27

3 个答案:

答案 0 :(得分:2)

通常,强制重新编译的简单方法是删除.pyc文件,但在系统文件的情况下,您可能没有.py所以要特别小心。

您最好的选择可能是创建一个virtual environment作为沙箱并保护您的文件,您可以根据需要轻松地重新创建它。

如果你已经从这样做了,那么你的任务可能不是你应该检查的。

我还 强烈 建议像限制用户那样运行测试,而不是管理员或具有管理员权限的超级用户,此可能首先做一些工作,让它在没有管理员权限的情况下运行,但有一些优点:

  1. 安全 - 有限的用户必须非常努力地破坏系统,即如果管理员已为所有用户安装了python,则受限用户不应具有对安装目录的写入权限,
  2. 部署 - 如果您将代码传递给其他用户,他们可能没有管理员权限,但您会知道您的代码将在没有它们的情况下运行,(根据先决条件),
  3. 可移植性 - 如果您想在Linux机器上运行,您的代码不需要管理员权限才能运行,
  4. 可扩展性 - 如果您有机会在超级计算机/群集上运行代码,我可以保证以管理员身份运行。

答案 1 :(得分:0)

您可以触摸所有.py,然后强行导入。

但你为什么要这样做?

答案 2 :(得分:0)

我另外看到的一个主要用例是当你在git存储库中工作并在分支上切换时。 .py文件可能会使用不同的内容签出但使用较旧的时间戳。如果您不强制以某种方式强制重新创建.pyc文件,则会出现问题。

CKol