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

时间:2017-02-16 17:36:44

标签: python python-2.7 python-import pythonpath

当我运行脚本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 个答案:

答案 0 :(得分:0)

您似乎有两种选择:

  1. 编辑 family.SelectMany( p => p.Children.GroupBy(c => c.Id) .Select(g => g.OrderByDescending(c => c.Value).First()), (p,c) => new { Parent = p, Child = c }) 以首先给出python包。很容易做到。它只是sys.path个字符串。做一些列表操作以在最后添加第一个项目。
  2. 将threading.py从root移动到另一个包中。像list
  3. 如果我在你的位置,我会选择第二个选项,因为它有助于长期保持代码清洁。