【问题标题】:Changing the directory where .pyc files are created更改创建 .pyc 文件的目录
【发布时间】:2011-04-01 03:03:31
【问题描述】:

有没有办法改变 Python 解释器创建 .pyc 文件的目录?我看到了两个关于该主题的 PEP(03043147),但似乎没有一个在默认解释器中实现(我正在使用 Python 3)。

我错过了什么吗?

【问题讨论】:

  • 你能告诉我们更多关于你为什么要移动它们的信息吗?
  • 只是出于好奇,保持目录干净。
  • 我也在想同样的事情。我有一个案例,其中包含源文件的目录不可写,并且想要重新定位 pycache,以便所有用户都可以从缓存中受益,而无需对实际的 python 源文件目录进行写访问。

标签: python path python-3.x pyc


【解决方案1】:

是的,从 Python 3.8 开始,您可以控制此行为。最初的讨论始于2003年的pep 304

虽然最初的 PEP 已被撤回,但此功能的一个变体已被 最终在 https://bugs.python.org/issue33499 中为 Python 3.8 实现了

在结果中,您可以使用PYTHONPYCACHEPREFIX=path-X pycache_prefix=pathsys.pycache_prefix 进行控制。

【讨论】:

  • 对于不关心 pycache 会发生什么的 Linux 用户,将其添加到 .bashrc 时会很好地工作:export PYTHONPYCACHEPREFIX=/tmp。缓存文件将发送至/tmp,并在 10 天后或系统重启时被清除。
【解决方案2】:

这可能对某些人有用: Miscellaneous options,尤其是-B 选项:

如果给定,Python 不会尝试在导入源时写入 .pyc 文件 模块。另见PYTHONDONTWRITEBYTECODE

【讨论】:

    【解决方案3】:

    无法更改 .pyc 文件的位置。 Python 3.2 实现了__pycache__ 方案,所有的.pyc 文件都进入一个名为__pycache__ 的目录。如果您确实需要保持目录清洁,现在可以使用 Python 3.2 alpha 1。

    在 3.2 发布之前,尽可能多地配置工具以忽略 .pyc 文件。

    【讨论】:

    • 您的自定义 .py 文件被编译并存储在同一目录下 __pycache__ 文件夹下的 .pyc 文件中。你会在C:\Python34\Lib\__pycache__下找到常用的编译文件。
    • 这个答案已经过时了,检查stackoverflow.com/a/60024195/880783
    【解决方案4】:

    Python 文件并不总是存储在同一目录中,如果您使用 pycache,它们将被定向到 pycache。关于能够拥有自定义位置和名称的任何答案,因为导入模块是相当喜怒无常的,并不总是有效。您将能够在 github.com/LolexInc/Lolex-Tools/tree/Beta 上看到我的意思并查看 JTToolsInstaller.py。里面有很多乱七八糟的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多