1
A
回答
6
一個進口的第一件事情是sitecustomize
和usercustomize
模塊;您可以使用自定義列表實施來替換sys.path
,該自定義列表實施可記錄正在進行的所有更改。
首先,找到在哪裏放置usercustomize
或sitecustomize
模塊;該site
module可以告訴你在什麼地方,第一:
python -m site --user-site
如果該目錄不存在,創建它和它把一個usercustomize.py
有:
import sys
class VerboseSysPath(list):
def croak(self, action, args):
frame = sys._getframe(2)
print('sys.path.{}{} from {}:{}'.format(
action, args, frame.f_code.co_filename, frame.f_lineno))
def insert(self, *args):
self.croak('insert', args)
return super(VerboseSysPath, self).insert(*args)
def append(self, *args):
self.croak('append', args)
return super(VerboseSysPath, self).append(*args)
def extend(self, *args):
self.croak('extend', args)
return super(VerboseSysPath, self).extend(*args)
def pop(self, *args):
self.croak('pop', args)
return super(VerboseSysPath, self).pop(*args)
def remove(self, *args):
self.croak('remove', args)
return super(VerboseSysPath, self).pop(*args)
def __delitem__(self, *args):
self.croak('__delitem__', args)
return super(VerboseSysPath, self).__delitem__(*args)
def __setitem__(self, *args):
self.croak('__setitem__', args)
return super(VerboseSysPath, self).__setitem__(*args)
def __setslice__(self, *args):
self.croak('__setslice__', args)
return super(VerboseSysPath, self).__setslice__(*args)
sys.path = VerboseSysPath(sys.path)
現在,這會抱怨所有嘗試更改sys.path
列表。
演示,在上述放置在任一site-packages/sitecustomize.py
或`python -m site --user-site`/usercustomize.py
模塊:
$ cat test.py
import sys
sys.path.append('')
$ bin/python test.py
sys.path.append('',) from test.py:3
0
與python -S
原因蟒開始蟒不加載site.py
,所以它的默認值是從當蟒第一啓動保存。
相關問題
- 1. 何時修改sys.path?
- 2. Sys.path修改或更復雜的問題?
- 3. Python sys.path修改不起作用
- 4. python修改sys.path不起作用
- 5. 如何讓nosetests將修改過的sys.path傳遞給python中的測試腳本?
- 6. 如何修改Google App Engine(Python)中的sys.path?
- 7. 如何從.htaccess修改sys.path以允許mod_python查看Django?
- 8. 調試期間修改ASP.NET會話?
- 9. 修改gstreamer調試級別值
- 10. 無法在調試中修改此值
- 11. 更改python sys.path的優先級
- 12. 加載改變sys.path的模塊
- 13. 如何讓Python選擇正確的模塊而無需手動修改sys.path?
- 14. 不同的sys.path
- 15. 修改調用棧
- 16. 更改sys.path以讀取文檔
- 17. 爲什麼使用Python-YQL模塊將sys.path [0]更改爲sys.path [1]?
- 18. Visual Studio 11調試器修復/功能/改進(特別是針對C#調試)?
- 19. NO_MODIFICATION_ALLOWED_ERR:試圖修改不允許修改的對象
- 20. python中的新sys.path
- 21. 如何修改和調試由第三方提供的CSS
- 22. 如何跟蹤/調試Apache Camel或AOP修改的代碼?
- 23. 試圖修改wordpress模板
- 24. 嘗試修改使用PowerShell
- 25. 試圖修改模板
- 26. 調試/修復BFS算法
- 27. PYTHONPATH與sys.path
- 28. python easy_install.pth sys.path
- 29. PYTHONPATH與sys.path(RELOADED)
- 30. dist-packages和sys.path
您可以先檢查'sys.path'然後導入模塊並再次檢查。 – ForceBru 2015-02-10 13:29:54