繁体   English   中英

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

[英]How to force python to ignore or recreate pyc/pyo files?

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

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

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

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

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

如果你已经从这样运行那么可能你的任务不是你应该检查这个。

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

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

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

但是你为什么要这样做呢?

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

CKol

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM