动态更新PYTHONPATH会阻止.pyc更新

时间:2016-10-08 12:43:07

标签: python pythonpath pyc

为了让我自己在项目中拥有清晰的文件结构,我使用以下代码片段将项目主文件夹动态添加到PYTHONPATH,从而确保我甚至可以从文件位置上方导入文件。

import sys
import os
sys.path.insert(0, os.path.join(os.path.dirname(os.path.realpath(__file__)), "."))

由于我这样做,当我启动主文件时,在我手动删除任何.pyc文件之前,不再能识别对模块的更改。因此我认为这可以防止python检查pyc文件是否是最新的。我能以任何方式克服这个问题吗?

2 个答案:

答案 0 :(得分:1)

您可以尝试让python不要写那些* .pyc文件。

How to avoid .pyc files?

对于大型项目而言,从性能角度来看,这一点很重要。您可能不关心这一点,然后您就不能创建pyc文件。

答案 1 :(得分:1)

如果模块名称不再是唯一的,那么添加已导入模块的路径会让您遇到麻烦。考虑您执行import foo,将其父包bar添加到sys.path - 它现在也可以import bar.foo。 Python会认为两者都是不同的模块,这可能会破坏依赖于模块身份的任何东西。

你应该首先考虑为什么你需要做这个黑客攻击。如果您的包中放置了可执行文件,则不应该执行

cd bardir/bar
python foo

但是通过

将其称为包的一部分
cd bardir
python -m bar.foo