from twisted.internet.ssl import ClientContextFactory
from twisted.internet.ssl import PrivateCertificate
myClientCert = twisted.internet.ssl.PrivateCertificate.load(keyAndCert.read())
Строка 1 помещает имя ClientContextFactory
в вашу область видимости. Строка 2 помещает имя PrivateCertificate
в вашу область видимости. Строка 4 пытается прочитать два имени из вашей области: twisted
и keyAndCert
. Ни одно из них не соответствует двум именам, которые вы указали в своей области (ClientContextFacotry
и PrivateCertificate
).
К счастью, причина, по которой вы пытаетесь использовать имя twisted
, по-видимому, состоит в том, чтобы достичь PrivateCertificate
. Вы можете заменить twisted.internet.ssl.PrivateCertificate
на имя, которое фактически находится в вашей области, PrivateCertificate
.
Как только вы это исправите, вы получите сообщение об ошибке keyAndCert
, так как это также не определено в вашей области (если это не так, но вы пропустили код, который его определяет).