python - 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
- 我尝试
python-socketio
通过 pip 安装,但它仍然没有被使用。 MySQL-python
安装在服务器上。
如何强制应用程序使用虚拟环境的版本?
解决方案
推荐阅读
- c# - 相机没有视野定义
- r - zeroinfl 模型 - 警告消息:在 sqrt(diag(object$vcov)) 中:产生了 NaN
- sql - 替换 Select 语句上的函数,删除 (-)
- android - 如何伪造 Result.toMappedResponse?
- mongodb - 如何从嵌套文档中获取数组,mongo
- java - 清单中的请求旧版外部存储权限 - Google Play 控制台 5 月 5 日消息
- javascript - { [k: string]: string } 和 Map 有什么区别
- python - 在列表中查找不在其他列表中的值
- graphql - 使用接口片段时,FieldsConflict 类型的 GraphQL 验证错误
- php - php连接在字符串末尾添加额外的空间