更改创建 .pyc 文件的目录

Posted

技术标签:

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

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

我错过了什么吗?

【问题讨论】:

你能告诉我们更多关于你为什么要移动它们的信息吗? 只是出于好奇,保持目录干净。 我也在想同样的事情。我有一个案例,其中包含源文件的目录不可写,并且想要重新定位 pycache,以便所有用户都可以从缓存中受益,而无需对实际的 python 源文件目录进行写访问。 【参考方案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__下找到常用的编译文件。 这个答案已经过时了,检查***.com/a/60024195/880783【参考方案4】:

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

【讨论】:

以上是关于更改创建 .pyc 文件的目录的主要内容,如果未能解决你的问题,请参考以下文章

python 从目录中删除所有pyc文件

删除 目录下pyc文件

Python啥情况下会生成pyc文件

PyInstaller打包、解包与反编译.pyc文件

Python的字节编译

sh 这将删除所有.pyc和.pyo文件以及__pycache__目录。它也非常快。请参阅http://stackoverflow.com/questions/785519/how-do