Оболочка Python работает по-разному в разных местах на одном компьютере в одной виртуальной среде

У меня есть облачный экземпляр машины Linux (openSuSE) с несколькими пользователями. Я создал виртуальную среду и установил все необходимые библиотеки (включая Klein).

У меня есть два пользователя "а" и "б". Когда вы вошли как "а" и внутри virtualenv, когда я открываю оболочку python в домашнем каталоге и набираю

import klein

он импортирует нормально.

Теперь, когда я меняю каталог на

/ Дом / б /

и запустить то же самое (открыть оболочку Python, импорт Klein), находясь в той же virtualenv, это дает мне ошибку.

 Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/a/.local/lib/python3.6/site-packages/klein/__init__.py", line 3, in <module>
    from klein._plating import Plating
  File "/home/a/.local/lib/python3.6/site-packages/klein/_plating.py", line 16, in <module>
    from .app import _call
  File "/home/a/.local/lib/python3.6/site-packages/klein/app.py", line 19, in <module>
    from twisted.internet import endpoints, reactor
  File "/home/a/.local/lib/python3.6/site-packages/twisted/internet/endpoints.py", line 58, in <module>
    from twisted.protocols.tls import TLSMemoryBIOFactory
  File "/home/a/.local/lib/python3.6/site-packages/twisted/protocols/tls.py", line 63, in <module>
    from twisted.internet._sslverify import _setAcceptableProtocols
  File "/home/a/.local/lib/python3.6/site-packages/twisted/internet/_sslverify.py", line 158, in <module>
    verifyHostname, VerificationError = _selectVerifyImplementation()
  File "/home/a/.local/lib/python3.6/site-packages/twisted/internet/_sslverify.py", line 141, in _selectVerifyImplementation
    from service_identity import VerificationError
  File "/home/a/.conda/envs/mm/lib/python3.6/site-packages/service_identity/__init__.py", line 7, in <module>
    from . import cryptography, pyopenssl
  File "/home/a/.conda/envs/mm/lib/python3.6/site-packages/service_identity/cryptography.py", line 16, in <module>
    from .exceptions import SubjectAltNameWarning
  File "/home/a/.conda/envs/mm/lib/python3.6/site-packages/service_identity/exceptions.py", line 21, in <module>
    @attr.s
AttributeError: module 'attr' has no attribute 's'

Команда "what python" дает одинаковый адрес в обоих местах, который является моим python-адресом virtualenv, и этого следовало ожидать.

Но что вызывает это странное поведение оболочки Python.

Спасибо

2 ответа

Решение

Может быть несколько разных пакетов Python, которые предоставляют один и тот же модуль Python. Например, есть как минимум два пакета, которые обеспечивают attr модуль:

https://pypi.org/project/attr/
https://pypi.org/project/attrs/

Возможно, вы установили неправильный пакет в зависимости от требований. Вы можете проверить, что вы установили с pip freeze,

Я решил это, и очень постыдная причина вызвала ошибку.

Одним из модулей, который использует Twisted, является модуль "attr". Я назвал один из моих файлов attr.py, и это было причиной всей ошибки.

Я сам не удаляю этот вопрос, если у модерации нет проблем, возможно, кто-то вроде меня может оказаться в такой же ситуации. Это может помочь им.

Никогда не называйте ваши файлы Python такими же, как у любого стандартного модуля, если не переопределите.

Также, если ваша проблема не устранена, ответ Джин определенно разрешит ее.

Другие вопросы по тегам