【问题标题】:Python shell working differently on different location in the same machine inside same virtual environmentPython shell 在同一虚拟环境中同一台机器的不同位置上以不同的方式工作
【发布时间】:2018-07-14 07:22:12
【问题描述】:

我有一个具有多个用户的 Linux 机器 (openSuSE) 的云实例。 我已经创建了一个虚拟环境并安装了所有我需要的库(包括 Klein)。

我有两个用户“a”和“b”。 在以“a”身份登录并在 virtualenv 中时,当我在主目录中打开 python shell 并键入

import klein

正常导入。

现在当我将目录更改为

/home/b/

并在同一个 virtualenv 中运行相同(打开 python shell,导入 klein),它给了我一个错误。

 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'

命令“which python”在两个位置给出了相同的地址,这是我的 virtualenv python 地址,应该是预期的。

但是是什么导致了这种奇怪的 python shell 行为。

谢谢

【问题讨论】:

    标签: python anaconda twisted attr klein-mvc


    【解决方案1】:

    我解决了它,一个非常可耻的原因导致了错误。

    Twisted 使用的模块之一是“attr”模块。我已将我的一个文件命名为 attr.py,这就是导致所有错误的原因。

    如果适度没有问题,我自己不会删除这个问题,也许像我这样的人可能会陷入同样的​​境地。这可能对他们有帮助。

    除非覆盖,否则切勿将您的 python 文件命名为与任何标准模块相同的名称。

    此外,如果您的问题仍然存在,那么 Jean 的回答肯定会解决它。

    【讨论】:

      【解决方案2】:

      可以有多个不同的 Python 包提供相同的 Python 模块。例如,至少有两个包提供了attr 模块:

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

      您可能根据要求安装了错误的软件包。您可以使用pip freeze 来检查您安装的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-16
        • 2014-01-09
        • 1970-01-01
        • 2018-12-11
        • 1970-01-01
        • 2011-04-04
        • 2016-04-18
        • 1970-01-01
        相关资源
        最近更新 更多