Python 沮丧于;pyOpenSSL“;无法确认模块

Python 沮丧于;pyOpenSSL“;无法确认模块,python,importerror,pyopenssl,Python,Importerror,Pyopenssl,环境:OSXBigsur 11.2.2;MacBookPro英特尔 我正试图让pyOpenSSL在Python3环境中工作。我一直在努力将Py2转换为Py3。我可以很容易地在Python2中完成这项工作;但我真的需要摆脱Python2,原因很明显 在我的python脚本中,我只需要命令:“import pyOpenSSL”。我还尝试过“导入OpenSSL”和“导入加密”,它们都会产生类似的“没有模块命名…”错误。无论是语法、拼写还是大小写,都不起作用 在以下所有尝试中,安装成功;我用“pip3列

环境:OSXBigsur 11.2.2;MacBookPro英特尔

我正试图让pyOpenSSL在Python3环境中工作。我一直在努力将Py2转换为Py3。我可以很容易地在Python2中完成这项工作;但我真的需要摆脱Python2,原因很明显

在我的python脚本中,我只需要命令:“import pyOpenSSL”。我还尝试过“导入OpenSSL”和“导入加密”,它们都会产生类似的“没有模块命名…”错误。无论是语法、拼写还是大小写,都不起作用

在以下所有尝试中,安装成功;我用“pip3列表”进行了验证

我试过:

  • 直接安装到Python系统中-不需要
  • 安装了pyenv和python3.8.7,并使用pip3安装了pyOpenSSL-no-go
  • 安装了VirtualNVRapper并创建了一个虚拟环境,安装在那里,仍然无法运行
我甚至在python中验证了模块是使用以下方法安装的:

import pkg_resources
installed_packages = pkg_resources.working_set
installed_packages_list = sorted(["%s==%s" % (i.key, i.version)
   for i in installed_packages])
print(installed_packages_list)
['appdirs==1.4.4', 'cffi==1.14.5', 'cryptography==3.4.6', 'distlib==0.3.1', 'filelock==3.0.12', 'pbr==5.5.1', 'pip==21.0.1', 'pycparser==2.20', 'pyopenssl==19.1.0', 'setuptools==49.2.1', 'six==1.15.0', 'stevedore==3.3.0', 'virtualenv-clone==0.5.4', 'virtualenv==20.4.2', 'virtualenvwrapper==4.8.4']
即使使用非pip,也显示至少安装了“openSSL”

>>> help("modules")

Please wait a moment while I gather a list of all available modules...

/Users/jewettg/.pyenv/versions/3.8.7/lib/python3.8/site-packages/setuptools/distutils_patch.py:25: UserWarning: Distutils was imported before Setuptools. This usage is discouraged and may exhibit undesirable behaviors or errors. Please use Setuptools' objects directly or at least import Setuptools first.
  warnings.warn(
OpenSSL             _thread             functools           resource
__future__          _threading_local    gc                  rlcompleter
_abc                _tkinter            genericpath         runpy
_ast                _tracemalloc        getopt              sched
_asyncio            _uuid               getpass             secrets
_bisect             _warnings           gettext             select
_blake2             _weakref            glob                selectors
_bootlocale         _weakrefset         grp                 setuptools
_bz2                _xxsubinterpreters  gzip                shelve
_cffi_backend       _xxtestfuzz         hashlib             shlex
_codecs             abc                 heapq               shutil

我不知道我做错了什么!救命

我不能告诉你pyenv或其他经理的情况,但是
conda
很少让我失望。我已经验证了我可以从干净的
conda
env w/python3.8安装这个lib并导入它:

(base) $ conda create python=3.8 -n pyssl
...
(base) $ conda activate pyssl
(pyssl) $ pip install pyopenssl
...
Successfully installed cffi-1.14.5 cryptography-3.4.6 pycparser-2.20 pyopenssl-20.0.1 six-1.15.0
(pyssl) $ python
Python 3.8.8 (default, Feb 24 2021, 21:46:12)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import OpenSSL
>>>
因此,您几乎肯定要导入OpenSSL。我使用的是Windows,但使用的是WSL2。不过,这些都不重要


通常当出现这些问题时,这是因为您已将库安装到一个Python解释器,但在实际运行时意外调用了另一个解释器(您没有安装库)。

另请注意;我已经尝试了PyOpenSSL的旧版本(19.1.10)和绝对最新版本(20.0.1)。在尝试运行代码段时,这些错误是从哪里来的?如果您使用
python3 xxx.py
运行程序,我建议您使用
python3-m pip install packagename安装模块,以确保模块是针对您当前使用的python版本安装的。谢谢@JasonRebeloNeves-我已经完成了这项工作。我还有一个将python指向python3的本地别名。因此,它被安装在python3环境中。在导入时会出现什么错误?你能把它贴在这里吗?如果没有,你能至少说出它找不到的模块吗?@MattMessersmith抱歉,这是pyOpenSSL模块。回溯(最后一次调用):文件“/f5\u cert\u create.py”,第96行,在导入OpenSSL模块NotFoundError:没有名为“OpenSSL”的模块,如上所述,我尝试了不同的名称,它们都产生了相同的结果,即使在验证错误中的命名模块是否存在时也是如此。我现在正在尝试Conda;将更新/发布我的经验,并让您知道。pyenv在RHEL上不可用;我现在正在尝试这个。所以我所有的原始版本都在OSX上;所以我试图在RHEL上复制。我只是感到困惑。我无法让它与openSSL一起工作。我可以让它与mysql.connector、请求等一起工作。。这些都有用。我创建了conda环境,激活了它,验证了没有安装pyopenssl,安装了它,但仍然无法运行。然后,我验证是否安装了giggles mysql.connector和请求,如果没有安装它们,代码将无法工作,但是安装后,代码工作正常,允许导入。格式很糟糕,但要复制您上面所做的操作:我做了一个“pip列表”,并验证是否安装了“pyOpenSSL 20.0.1”。然后我启动了python,“python 3.6.13 | Anaconda,Inc.|(默认,2021年2月23日,21:15:04)[GCC 7.3.0]linux版”。然后我继续“导入openssl”和“导入pyopenssl”以及“回溯(最近一次调用):文件“”,在ModuleNotFoundError:没有名为“openssl”的模块回溯(最近一次调用):文件“”,在ModuleNotFoundError:没有名为“pyopenssl”的模块”中的第1行。好的,显然情况很重要,而且,您不能依赖模块名称来匹配您用于导入的内容?!?!如果您“pip安装pyopenssl”,则必须“导入OpenSSL”(区分大小写)。你是怎么弄明白的?真让人困惑。仅供参考:它在Python 3.6和3.8中工作;只要我注意区分大小写@杰维特通过阅读文档找到了答案。我承认他们所做的事情不符合PEP8,违反规范会导致这种混乱。也就是说,我假设这个模块非常旧,可能是一个python2端口。也许我们可以让他们放松一下。毕竟,它是免费的。