2015-05-14 18 views
1

我不明白爲什麼運行python代碼的兩種方法在加載模塊時會有不同的結果。python導入模塊在解釋器和腳本文件中給出兩個不同的輸出

我執行腳本文件名爲ssl.py

import httplib 
import sys 

print sys.version_info 
print dir(httplib) 

這是命令窗口輸出我收到

C:\tests>python ssl.py 
sys.version_info(major=2, minor=7, micro=9, releaselevel='final', serial=0) 
['ACCEPTED', 'BAD_GATEWAY', 'BAD_REQUEST', 'CONFLICT', 'CONTINUE', 'CREATED', 'E 
XPECTATION_FAILED', 'FAILED_DEPENDENCY', 'FORBIDDEN', 'FOUND', 'GATEWAY_TIMEOUT' 
, 'GONE', 'HTTP', 'HTTPConnection', 'HTTPMessage', 'HTTPResponse', 'HTTPS_PORT', 
'HTTP_PORT', 'HTTP_VERSION_NOT_SUPPORTED', 'IM_USED', 'INSUFFICIENT_STORAGE', ' 
INTERNAL_SERVER_ERROR', 'LENGTH_REQUIRED', 'LOCKED', 'MAXAMOUNT', 'METHOD_NOT_AL 
LOWED', 'MOVED_PERMANENTLY', 'MULTIPLE_CHOICES', 'MULTI_STATUS', 'NON_AUTHORITAT 
IVE_INFORMATION', 'NOT_ACCEPTABLE', 'NOT_EXTENDED', 'NOT_FOUND', 'NOT_IMPLEMENTE 
D', 'NOT_MODIFIED', 'NO_CONTENT', 'OK', 'PARTIAL_CONTENT', 'PAYMENT_REQUIRED', ' 
PRECONDITION_FAILED', 'PROCESSING', 'PROXY_AUTHENTICATION_REQUIRED', 'REQUESTED_ 
RANGE_NOT_SATISFIABLE', 'REQUEST_ENTITY_TOO_LARGE', 'REQUEST_TIMEOUT', 'REQUEST_ 
URI_TOO_LONG', 'RESET_CONTENT', 'SEE_OTHER', 'SERVICE_UNAVAILABLE', 'SWITCHING_P 
ROTOCOLS', 'StringIO', 'TEMPORARY_REDIRECT', 'UNAUTHORIZED', 'UNPROCESSABLE_ENTI 
TY', 'UNSUPPORTED_MEDIA_TYPE', 'UPGRADE_REQUIRED', 'USE_PROXY', '_CS_IDLE', '_CS 
_REQ_SENT', '_CS_REQ_STARTED', '_MAXHEADERS', '_MAXLINE', '_UNKNOWN', '__all__', 
'__builtins__', '__doc__', '__file__', '__name__', '__package__', 'array', 'mim 
etools', 'os', 'py3kwarning', 'responses', 'socket', 'urlsplit', 'warnings'] 

C:\tests>python 
Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win 
32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import httplib 
>>> dir(httplib) 
['ACCEPTED', 'BAD_GATEWAY', 'BAD_REQUEST', 'BadStatusLine', 'CONFLICT', 'CONTINU 
E', 'CREATED', 'CannotSendHeader', 'CannotSendRequest', 'EXPECTATION_FAILED', 'F 
AILED_DEPENDENCY', 'FORBIDDEN', 'FOUND', 'FakeSocket', 'GATEWAY_TIMEOUT', 'GONE' 
, 'HTTP', 'HTTPConnection', 'HTTPException', 'HTTPMessage', 'HTTPResponse', 'HTT 
PS', 'HTTPSConnection', 'HTTPS_PORT', 'HTTP_PORT', 'HTTP_VERSION_NOT_SUPPORTED', 
'IM_USED', 'INSUFFICIENT_STORAGE', 'INTERNAL_SERVER_ERROR', 'ImproperConnection 
State', 'IncompleteRead', 'InvalidURL', 'LENGTH_REQUIRED', 'LOCKED', 'LineAndFil 
eWrapper', 'LineTooLong', 'MAXAMOUNT', 'METHOD_NOT_ALLOWED', 'MOVED_PERMANENTLY' 
, 'MULTIPLE_CHOICES', 'MULTI_STATUS', 'NON_AUTHORITATIVE_INFORMATION', 'NOT_ACCE 
PTABLE', 'NOT_EXTENDED', 'NOT_FOUND', 'NOT_IMPLEMENTED', 'NOT_MODIFIED', 'NO_CON 
TENT', 'NotConnected', 'OK', 'PARTIAL_CONTENT', 'PAYMENT_REQUIRED', 'PRECONDITIO 
N_FAILED', 'PROCESSING', 'PROXY_AUTHENTICATION_REQUIRED', 'REQUESTED_RANGE_NOT_S 
ATISFIABLE', 'REQUEST_ENTITY_TOO_LARGE', 'REQUEST_TIMEOUT', 'REQUEST_URI_TOO_LON 
G', 'RESET_CONTENT', 'ResponseNotReady', 'SEE_OTHER', 'SERVICE_UNAVAILABLE', 'SW 
ITCHING_PROTOCOLS', 'StringIO', 'TEMPORARY_REDIRECT', 'UNAUTHORIZED', 'UNPROCESS 
ABLE_ENTITY', 'UNSUPPORTED_MEDIA_TYPE', 'UPGRADE_REQUIRED', 'USE_PROXY', 'Unimpl 
ementedFileMode', 'UnknownProtocol', 'UnknownTransferEncoding', '_CS_IDLE', '_CS 
_REQ_SENT', '_CS_REQ_STARTED', '_MAXHEADERS', '_MAXLINE', '_UNKNOWN', '__all__', 
'__builtins__', '__doc__', '__file__', '__name__', '__package__', 'array', 'err 
or', 'mimetools', 'os', 'py3kwarning', 'responses', 'socket', 'ssl', 'urlsplit', 
'warnings'] 
>>> 

你會發現HTTPSConnection方法是httplib的一個版本,而不是其他。這是爲什麼發生?

+2

您可以在輸入它後顯示您正在使用的庫的路徑,然後執行'print httplib'。 –

+0

兩者似乎都使用'C:\ Python27 \ lib \ httplib.pyc'中的 HTTPSConnection也出現在該文件中。然而,當我嘗試使用它時,我得到'AttributeError:'模塊'對象沒有屬性'HTTPSConnection'。 –

+0

根據'httplib'源代碼,它會嘗試導入模塊'ssl',並且只有在成功後纔會將'HTTPSConnection'添加到'__all__'。你可以嘗試從腳本中導入'ssl'嗎? – werewindle

回答

-1

一旦我將我的腳本名稱從ssl.py更改爲anotherName.py一切正常。當我試圖導入模塊時,IT變得困惑ssl

+0

這將是很好的包括解釋爲什麼你得到的問題或要求糾纏發表答案 – Alik

相關問題