首页 文章

由于ssl模块不可用,pip3安装在虚拟环境中,python3.6失败

提问于
浏览
31

(py36venv)vagrant @ pvagrant-dev-vm:/ vagrant / venvs $ pip3 install pep8 pip配置了需要TLS / SSL的位置,但是Python中的ssl模块不可用 . 收集pep8无法获取URL https://pypi.python.org/simple/pep8/:确认ssl证书时出现问题:无法连接到HTTPS URL,因为SSL模块不可用 . - 跳过找不到满足要求的版本pep8(来自版本:)没有为pep8找到匹配的分发

Background information - 尝试转移到python 3.6 .

使用以下命令安装python3.6:

wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz tar -xvf Python-3.6.0.tgz cd Python-3.6.0 ./configure --enable-优化使-j8 sudo make altinstall python3.6

通过以下方式创建virtualenv:

python3.6 -m venv py36venv source py36venv / bin / activate

试图安装pep8

(py36venv)pip3 install pep8 pip配置了需要TLS / SSL的位置,但是Python中的ssl模块不可用 . 收集pep8无法获取URL https://pypi.python.org/simple/pep8/:确认ssl证书时出现问题:无法连接到HTTPS URL,因为SSL模块不可用 . - 跳过找不到满足要求的版本pep8(来自版本:)没有为pep8找到匹配的分发

6 回答

  • 0

    在CentOS 7下从源代码构建Python 3.6.1时遇到了同样的错误 . 对于CentOS7,我不得不首先:

    sudo yum install openssl-dev
    

    然后:

    ./configure --enable-optimizations
    make altinstall
    

    现在 pip3.6 的作品:-)

  • 6

    这里可以找到完整的脚本

    安装先决条件

    For RHEL/CentOS

    sudo yum -y install gcc gcc-c++ zlib zlib-devel libffi-devel openssl-devel wget

    For Ubuntu/Debian

    sudo apt-get -y install build-essential python-dev python-setuptools python-pip python-smbus libncursesw5-dev libgdbm-dev libc6-dev zlib1g-dev libsqlite3-dev tk-dev libssl-dev openssl libffi-dev wget

    下载Python

    修改您想要Python版本的python版本

    cd /var/tmp sudo wget https://www.python.org/ftp/python/3.x.x/Python-x.x.x.tgz sudo tar xf Python-3.*.tgz cd Python-3*

    配置/制作/安装

    sudo ./configure --enable-optimizations --enable-shared --prefix=/usr/local sudo make && make altinstall

    清理共享库并添加到路径

    剥离调试符号的共享库可以在运行并行脚本时加快执行速度 .

    sudo make && make altinstall sudo strip /usr/local/lib/libpython3.7m.so.1.0 sudo echo 'export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib' >> /etc/profile.d/python.sh sudo echo 'export PATH=${PATH}:~/usr/local/bin/' >> /etc/profile.d/python.sh sudo echo '/usr/local/lib' >> /etc/ld.so.conf sudo ldconfig

    参考

  • 6

    我按照以下步骤在ubuntu 14.04中安装python3.6并且virtualenv pip installs工作正常 .

    Python 3.6 Installation:

    sudo apt-get install python3-dev libffi-dev libssl-dev
    wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz  
    tar xvf Python-3.6.0.tgz
    cd Python-3.6.0
    ./configure --enable-optimizations  
    make -j8  
    sudo make altinstall
    python3.6
    

    如果看到以下错误 -

    zipimport.ZipImportError:无法解压缩数据; zlib不可用make:*** [altinstall]错误1

    尝试:

    sudo apt-get install zlib1g-dev
    

    Validation:

    在python3.6中创建virtualenv:

    python3.6 -m venv testenv
    source testenv/bin/activate
    pip install pep8
    

    使用点子:

    (testenv) vagrant@pvagrant-dev-vm:~$ pip install pep8
    *Collecting pep8
      Downloading pep8-1.7.0-py2.py3-none-any.whl (41kB)
        100% |████████████████████████████████| 51kB 4.1MB/s
    Installing collected packages: pep8
    Successfully installed pep8-1.7.0*
    
    (testenv) vagrant@pvagrant-dev-vm:~$ pip list
    
    pep8 (1.7.0) 
    pip (9.0.1)
    setuptools (28.8.0)
    
  • 50

    我在Ubuntu-16.04.1上解决了这个问题 . 首先,您需要安装必要的库 . 要安装打开的终端(Ctrl Alt T),请键入;

    sudo apt-get install build-essential checkinstall
     sudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev
    

    之后转到python文件所在的目录,然后重新配置并重新安装python3.6 .

    cd /opt/Python3.6/
    ./configure
     make 
    sudo make install
    

    NOTE
    如果您通过ppa安装了Python3.6,那么请重新安装它;

    sudo apt-get install python3.6
    

    现在你应该能够使用pip3.6了

  • 9

    运行make在shell输出中向我报告:

    The necessary bits to build these optional modules were not found:
    _bz2                  _dbm                  _gdbm              
    _sqlite3              _ssl                  _tkinter           
    To find the necessary bits, look in setup.py in detect_modules() for the module's name.
    

    What solved the problem 在我的情况下(Linux Mint 18.1,openssl已安装) was editing the setup.py 在Python-3.6.0文件夹中 adding there openssl安装将ssl.h文件放入我的系统的路径(/ usr / include / openssl / ssl . H ) . 这里我添加了行 '/usr/include' 的部分:

    # Detect SSL support for the socket module (via _ssl)
        search_for_ssl_incs_in = [
                              '/usr/local/ssl/include/',
                              '/usr/contrib/ssl/include/',
                              '/usr/include/'
                             ]
        ssl_incs = find_file('openssl/ssl.h', inc_dirs,
                             search_for_ssl_incs_in
                             )
    
  • 3

    当我尝试使用python3.6.0创建虚拟环境时,我偶然发现了同样的问题 . 这是我的Mac OS X 10.12.2解决方案(Py_minion评论非常接近):

    设置

    我通过以下步骤创建了环境:下载python3.6.0运行

    ./configure --prefix=<some_path>`
    make
    make install
    mkvirtualenv --python=<some_path/bin/python3.6> foo
    

    所以基本类似于:https://stackoverflow.com/a/11301911/1286093

    如果您遇到与我相同的问题,则表示在运行 make 时类似的行

    The necessary bits to build these optional modules were not found: _ssl
    

    解决方案

    安装openssl

    brew install openssl
    brew unlink openssl && brew link openssl --force
    

    更改模块/设置或模块/ Setup.dist

    您可以在下载的Python版本的目录中找到这些文件 .

    评论并在必要时更改第209-211行(我必须将SSL变量更改为我的openssl位置) .

    SSL=/usr/local/opt/openssl <---- THIS DEPENDS ON YOUR INSTALLATION
    _ssl _ssl.c \
        -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
        -L$(SSL)/lib -lssl -lcrypto
    

    鉴于这是openssl的位置

    设置环境变量

    export CFLAGS="-I$(brew --prefix openssl)/include"
    export LDFLAGS="-L$(brew --prefix openssl)/lib"
    

    再次制作并安装

    运行

    ./configure --prefix=<some_path>`
    make
    make install
    mkvirtualenv --python=<some_path/bin/python3.6> foo
    

    再次为我做了伎俩

相关问题