为了让我自己在项目中拥有清晰的文件结构,我使用以下代码片段将项目主文件夹动态添加到PYTHONPATH,从而确保我甚至可以从文件位置上方导入文件。
import sys
import os
sys.path.insert(0, os.path.join(os.path.dirname(os.path.realpath(__file__)), "."))
由于我这样做,当我启动主文件时,在我手动删除任何.pyc文件之前,不再能识别对模块的更改。因此我认为这可以防止python检查pyc文件是否是最新的。我能以任何方式克服这个问题吗?
答案 0 :(得分:1)
您可以尝试让python不要写那些* .pyc文件。
对于大型项目而言,从性能角度来看,这一点很重要。您可能不关心这一点,然后您就不能创建pyc文件。
答案 1 :(得分:1)
如果模块名称不再是唯一的,那么添加已导入模块的路径会让您遇到麻烦。考虑您执行import foo
,将其父包bar
添加到sys.path
- 它现在也可以import bar.foo
。 Python会认为两者都是不同的模块,这可能会破坏依赖于模块身份的任何东西。
你应该首先考虑为什么你需要做这个黑客攻击。如果您的包中放置了可执行文件,则不应该执行
cd bardir/bar
python foo
但是通过
将其称为包的一部分cd bardir
python -m bar.foo