首页 > 解决方案 > Python 3 虚拟环境为 PyMySQL 使用默认的 Python (2.6) 套接字连接

问题描述

服务器的默认 Python 版本是 2.6。还安装了 Python 3,我创建了一个虚拟环境 ( python3 -m venv py3env) 并在虚拟环境中安装了 Flask 和 PyMySQL。

但是,在配置 web-server (Apache+WSGI) 后,应用程序无法运行并抛出以下错误:

       File "/var/www/webapp/py3env/lib/python3.6/site-packages/pymysql/__init__.py", line 90, in Connect
return Connection(*args, **kwargs)
       File "/var/www/webapp/py3env/lib/python3.6/site-packages/pymysql/connections.py", line 699, in __init__
  self.connect()
       File "/var/www/webapp/py3env/lib/python3.6/site-packages/pymysql/connections.py", line 935, in connect
     self._get_server_information()
       File "/var/www/webapp/py3env/lib/python3.6/site-packages/pymysql/connections.py", line 1249, in _get_server_information
         packet = self._read_packet()
       File "/var/www/webapp/py3env/lib/python3.6/site-packages/pymysql/connections.py", line 991, in _read_packet
         packet_header = self._read_bytes(4)
       File "/var/www/webapp/py3env/lib/python3.6/site-packages/pymysql/connections.py", line 1025, in _read_bytes
         data = self._rfile.read(num_bytes)

       File "/usr/lib64/python2.6/io.py", line 940, in read
         return self._read_unlocked(n)
       File "/usr/lib64/python2.6/io.py", line 974, in _read_unlocked
         chunk = self.raw.read(wanted)
       File "/usr/lib64/python2.6/io.py", line 591, in read
         n = self.readinto(b)

       File "/var/www/webapp/py3env/lib/python3.6/site-packages/pymysql/_socketio.py", line 59, in readinto
         return self._sock.recv_into(b)
     TypeError: recv_into() argument 1 must be pinned buffer, not bytearray

如何强制应用程序使用虚拟环境的版本?

标签: pythonpython-3.xflaskvirtualenvpymysql

解决方案


推荐阅读