我正在在运行centos 6.10的专用服务器上安装Python 3.7
在跳了圈然后尝试执行此操作后,我遇到了另一个错误。使用Python 3.7尝试并保持最新状态,在pip安装中遇到SSL问题是一个相当普遍的问题。我得出的结论是,解决此问题的最佳方法是获取正确版本的OpenSSL。因此,我这样做了,然后编辑了我的python modules / Setup.dist文件,重新配置了它,重新运行了altinstall,尽管一切似乎还不错。出于某种原因,命令Python3.7
是我以前运行此python时使用的命令,突然变得无法识别为命令,而在Python3.7目录中是一个文件夹python
,现在该文件夹在执行时(在编辑完环境路径后,打开了Python3.7。以前不是这种情况,只是Python3.7
,有人知道这里可能发生什么事吗?
此外,我对这整个SSL事情都精打细算,并且已经阅读了关于阳光下的每篇文章。这是我最近执行的一些命令的列表:
#Unpacked Python3.7 into /usr/src directory
./configure --enable-optimizations --enable-loadable-sqlite-extensions
make altinstall
#installation failed from no '_ctypes' module
yum install libffi-devel
#repeat configure above
#yaaay python
#Successfully installed pip-10.0.1 setuptools-39.0.1 was the final message of the installation
Python3.7 -m venv /my/project/directory/ENV
pip install {library}
#this is where my issues began with SSL
日志:
(ENV) [root@s1.1.1.1 ProjectDirectory]# pip3 install twisted
pip is configured with locations that require TLS/SSL, however, the SSL module in Python is not available.
Collecting twisted
Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/twisted/
Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/twisted/
Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/twisted/
Retrying (Retry(total=1, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/twisted/
Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError("Can't connect to HTTPS URL because the SSL module is not available.")': /simple/twisted/
Could not fetch URL https://pypi.org/simple/twisted/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/twisted/ (Caused by SSLError("Can't connect to HTTPS URL because the SSL module is not available.")) - skipping
Could not find a version that satisfies the requirement twisted (from versions: )
No matching distribution found for twisted
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificate: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /simple/pip/ (Caused by SSLError("Can't connect to HTTPS URL because the SSLmodule is not available.")) - skipping
所以我感觉很好。别担心。最新版本的Python甚至无法立即使用pip3。精彩。好吧,我像我们一样开始搜索google,得出的结论是,每个人都只是再次重新配置了python,它神奇地工作了。不知道为什么,但是还可以。我很喜欢它。我找到了这篇文章:
https://techglimpse.com/install-python-openssl-support-tutorial/
认为还可以。如果我可以获取python3.7 SSL,那么它应该可以使pip3正常工作?错误。不幸的是,如果我以上面提到的新奇怪的方式使用Python3.7,然后键入import ssl
,则会出现此错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/src/Python-3.7.0/Lib/ssl.py", line 98, in <module>
import _ssl # if we can't import it, let the error propagate
ModuleNotFoundError: No module named '_ssl'
有人可以给我一些帮助吗?我有点迷失在海洋中,而且我不知道如何游泳……任何事情都很棒,但是我对这个服务器管理员一无所知,所以越简单越好:)谢谢前进。
编辑: 顺便说一句
yum install openssl
和
yum install openssl-devel
都导致“已经安装”标志...因此,我认为这不是另一种解决方案。但是,当我手动进行安装时,我使用的是1.1.1版本,因为我知道3.7出于某种原因放弃了对OpenSSL几个不同版本的支持。我认为已经安装了yum的是1.0.2。我不知道centos 6.10平台是否有容量,尽管就版本限制而言。
答案 0 :(得分:0)
我不确定您是否已经解决了这个问题,但是您必须确保在构建python时可以找到openssl库。
因此具体来说: 如果您没有使用系统ssl库,或者它们不在您的路径中,则在--configure处需要指定它们的位置。我会给你确切的路线,但我本人最近没有这样做。 如果您已正确完成此操作,则在构建末尾将看不到python跳过构建'ssl'模块的报告。 当您看到上面关于(_ssl)的错误时,这特别意味着python不是使用它构建的。 如果在不更改--configure的情况下使用相同的步骤,则会在3.6中遇到相同的问题。
答案 1 :(得分:0)
在尝试为Ubuntu 18.04 LTS编译Python 3.7.2时遇到了这个问题
确保您具有构建Python内置模块所需的所有依赖项。在make 2>&1 | tee make.txt
之后运行configure
,并查找有关构建失败的模块的警告。如果模块无法构建,Python将不会安装失败,而不会构建那些导致您所看到的错误的模块。
安装依赖项后,请确保再次运行configure
。
答案 2 :(得分:0)
在我的 mac OS 上,我遇到了类似的问题,由于SSL问题,我无法在虚拟环境中安装任何东西甚至升级pip
。
sudo chown -R ${whoami} /usr/local/Cellar
后跟
brew install openssl
${whoami}
是什么?它是一个占位符;运行命令时应放在此处的是实际的当前用户。
如果您不认识您的用户,请在命令行中输入
whoami
输出是您的用户。因此,如果您键入该命令并获得johnsmith
作为输出,则在运行第一个命令时,将“ ${whoami}
”替换为“ johnsmith
”,如下所示:
sudo chown -R johnsmith /usr/local/Cellar
答案 3 :(得分:0)
配置选项“ --with-openssl”对我有用