【问题标题】:Python 2.7 won't load any modules I installed. Will only load native modules that come with Python 2.7Python 2.7 不会加载我安装的任何模块。只会加载 Python 2.7 附带的本机模块
【发布时间】:2020-04-15 18:26:56
【问题描述】:

注意:请不要在这里评论 Python 2.7 已贬值。我已经知道了。在迁移到 3.x 之前,我需要先完成这项工作。

在 Windows 10 上,我已安装(并正确运行)Python 2.7 和 Python 3.7。因为我只需要 Python 2.7,所以我卸载了 Python 3.7(并手动删除了安装在 .\Python37* 下的各个包)以及下面的虚拟环境目录。我不知道该虚拟环境是否与 Python 2.7 或 Python 3.7 相关联:

C:\Users\MKANET\Envs\MKA.NETT

重启后,令我惊恐的是,每次我运行 Python 2.7 脚本时,在尝试导入使用 PIP 安装的模块时都会遇到一大堆模棱两可的回溯错误(对于 Python 2.7)。但是,我在导入 sys、json(Python 2.7 预装的软件包)等模块时没有问题。 从 Windows 命令行执行以下脚本时:

& C:/Users/MKANET/AppData/Local/Programs/Python/python27/python.exe c:/Users/MKANET/OneDrive/Dev/Projects/Python/test2.py

...我收到一堆模棱两可的回溯错误:。

Traceback (most recent call last):
File "c:/Users/MKANET/OneDrive/Dev/Projects/Python/test2.py", line 3, in <module>
  from pypsexec.client import Client
File "C:\Users\MKANET\AppData\Local\Programs\Python\python27\lib\site-packages\pypsexec\client.py", line 8, in <module>
  from smbprotocol.connection import Connection, NtStatus
File "C:\Users\MKANET\AppData\Local\Programs\Python\python27\lib\site-packages\smbprotocol\connection.py", line 33, in <module>
  from cryptography.hazmat.primitives.ciphers import (
File "C:\Users\MKANET\AppData\Local\Programs\Python\python27\lib\site-packages\cryptography\hazmat\primitives\ciphers\aead.py", line 10, in <module>
  from cryptography.hazmat.backends.openssl import aead
File "C:\Users\MKANET\AppData\Local\Programs\Python\python27\lib\site-packages\cryptography\hazmat\backends\openssl\__init__.py", line 7, in <module>
  from cryptography.hazmat.backends.openssl.backend import backend
File "C:\Users\MKANET\AppData\Local\Programs\Python\python27\lib\site-packages\cryptography\hazmat\backends\openssl\backend.py", line 16, in <module>
  from cryptography import utils, x509
File "C:\Users\MKANET\AppData\Local\Programs\Python\python27\lib\site-packages\cryptography\x509\__init__.py", line 8, in <module>
  from cryptography.x509.base import (
File "C:\Users\MKANET\AppData\Local\Programs\Python\python27\lib\site-packages\cryptography\x509\base.py", line 18, in <module>
  from cryptography.x509.extensions import Extension, ExtensionType
File "C:\Users\MKANET\AppData\Local\Programs\Python\python27\lib\site-packages\cryptography\x509\extensions.py", line 26, in <module>
  from cryptography.x509.general_name import GeneralName, IPAddress, OtherName
File "C:\Users\MKANET\AppData\Local\Programs\Python\python27\lib\site-packages\cryptography\x509\general_name.py", line 10, in <module>
  from email.utils import parseaddr
File "c:\Users\MKANET\OneDrive\Dev\Projects\Python\email.py", line 11, in <module>
  obj = win32com.client.Dispatch("Outlook.Application")
File "C:\Users\MKANET\AppData\Local\Programs\Python\python27\lib\site-packages\win32com\client\__init__.py", line 95, in Dispatch
  dispatch, userName = dynamic._GetGoodDispatchAndUserName(dispatch,userName,clsctx)
File "C:\Users\MKANET\AppData\Local\Programs\Python\python27\lib\site-packages\win32com\client\dynamic.py", line 114, in _GetGoodDispatchAndUserName
  return (_GetGoodDispatch(IDispatch, clsctx), userName)
File "C:\Users\MKANET\AppData\Local\Programs\Python\python27\lib\site-packages\win32com\client\dynamic.py", line 91, in _GetGoodDispatch
  IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.IID_IDispatch)
pywintypes.com_error: (-2147221005, 'Invalid class string', None, None)

更新重大线索: 仅在执行以下文件夹中的脚本时才会发生这种情况:

C:\Users\Michael\OneDrive\Dev\Projects\Python

如果我在 C: Drive 上的任何其他文件夹中执行脚本,模块会完美加载而不会出错。我不知道这个文件夹有什么不同导致我的模块无法加载。也许,这个文件夹中有一个文件导致了这个?

【问题讨论】:

  • 不相关提示:使用另一个 python 版本(如 3.8),因为不再支持 2.7
  • 是的,我知道。这适用于尚未迁移到 3.8 的现有项目。我必须尽快完成这项工作。
  • 如果你运行会发生什么:import sys for path in sys.path: print(path)
  • 正如帖子中提到的,这些模块导入就好了。
  • sys.prefix 设置为什么?

标签: python windows python-2.7


【解决方案1】:

由于此问题仅限于以下目录中的脚本:

C:\Users\Michael\OneDrive\Dev\Projects\Python

我能够将问题缩小到一个名为 email.py 的文件。例如,如果我尝试导入一个模块,请求;出于某种奇怪的原因,会创建一个email.pyc;其次是导入模块错误。我所做的只是将 email.py 重命名为 mail.py.. 并且,这整个问题终于停止了。

我不知道为什么 Python 2.7 对那个文件名很敏感,但是将其更改为其他名称为我解决了这个问题。也许,有人可以评论为什么文件名会破坏东西;尤其是当我在同一目录中有 __init__.py 来导入另一个模块时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    相关资源
    最近更新 更多