Python3 __pycache__ 即使 PYTHONDONTWRITEBYTECODE=1 也会生成

问题描述 投票:0回答:4

我想问是否有另一种方法可以禁止在服务器中创建

__pycache__

我的问题是即使我已经将环境变量设置为

PYTHONDONTWRITEBYTECODE=1

它仍然会生成

我想禁用

__pycache__
,因为我只在部署中保留 5 个版本。该缓存阻止了第 6 版的删除,因为该缓存归 root 所有,只能通过 sudo 删除。

我正在使用 capistrano 进行部署。

感谢您的回复!

python python-3.x capistrano
4个回答
34
投票

我已经解决了这个问题。

export PYTHONDONTWRITEBYTECODE=1
有效。
pycache
文件夹的生成是在docker中的(我也是用的docker)。我所做的是在docker内部,我有这个
export PYTHONDONTWRITEBYTECODE=1
所以它解决了问题。谢谢你的帮助。


21
投票

您还可以通过 sys.dont_write_bytecode:

禁用 Python 代码中的缓存使用
import sys

sys.dont_write_bytecode = True

import first_module
from second_module import MyClass
...

重要提示:您必须将这些行放在之前彼此导入模块,因为缓存文件的创建是由导入语句触发的。


4
投票

对于 Visual Studio Code 用户:如果设置:

python.testing.pytestEnabled
为 true,Visual Studio Code 似乎会忽略
PYTHONDONTWRITEBYTECODE=1
并在某些时候(例如保存文件)生成
__pycache__


0
投票

对于WINDOWS用户:需要在环境变量中设置该变量才能永久解决。

  1. 打开控制面板,然后打开系统和安全、系统。
  2. 向下滚动,然后单击高级系统设置链接。
  3. 单击“高级”选项卡中的环境变量。
  4. 在系统变量中,点击新建,设置变量名:PYTHONDONTWRITEBYTECODE,变量值:1.点击确定,再次确定,重启系统。

撰写本文时已在 Windows 10 上进行测试。

© www.soinside.com 2019 - 2024. All rights reserved.