2017-02-16 48 views
0

當我運行腳本pyhton path/to/app.py時,path/to目錄將放在python要查找要導入的模塊的位置列表中。強制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

如果我在您的位置,我會選擇第二個選項,因爲它有助於長期保持代碼清潔。

相關問題