强制 python 不要将脚本的目录添加到导入位置



当我pyhton path/to/app.py运行脚本时,目录path/to放在python将查找要导入的模块的位置列表的前面。

有没有办法迫使python不这样做?这是运行脚本而不将其目录放在导入路径上(或将其添加为最低优先级而不是最高优先级)?


原因是在这个目录中,我有另一个名为threading的模块,我的脚本导入logging它本身发出一个import threading,然后解析为我的自定义threading模块而不是内置模块:

$ tree
.
└── app
├── main.py
└── threading.py
$ cat app/main.py
import logging

python app/main.py结果

Traceback (most recent call last):
File "app/main.py", line 2, in <module>
import logging
File "/usr/lib/python2.7/logging/__init__.py", line 201, in <module>
_lock = threading.RLock()
AttributeError: 'module' object has no attribute 'RLock'

您似乎有两个选择:

  1. 编辑sys.path以优先选择 python 包。很容易做到。这只是一list串。执行一些列表操作以在末尾添加第一项。
  2. 将 threading.py 从根移动到另一个包中。喜欢processing.threading.

如果我在你的位置,我会选择第二个选项,因为它有助于长期保持代码干净。

相关内容

  • 没有找到相关文章

最新更新