2017-02-16 48 views
0

Когда я запускаю сценарий pyhton path/to/app.py, тогда каталог path/to помещается в список местоположений, где python будет искать модули для импорта.Force 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' 
+0

Похоже, что это аналогичный вопрос: http://stackoverflow.com/questions/25533631/how-to-remove-current-directory-from-python-import-path ... Похоже, вам просто нужно для вставки пути импорта модуля python в начале переменной пути – Marviel

ответ

0

Вы, кажется, ВГА e два варианта здесь:

  1. Редактировать sys.path, чтобы предоставить первоклассные пакеты python. Очень легко сделать. Это всего лишь list строк. Сделайте некоторые манипуляции с списком, чтобы добавить первые элементы в конце.
  2. Переместить threading.py из корня, в другой пакет. Мне нравится processing.threading.

Если бы я был на вашем месте, я бы выбрал второй вариант, так как он помог сохранить код в долгосрочной перспективе.