每篇10个问题.
Python问题总结(一)
Python问题总结(三)
1 gunicorn启动
cal/lib/python2.7/site-packages/gunicorn/app/base.py", line 72, in run
Arbiter(self).run()
File "/home/SP-in-WEB/xindq/imageStyleTransform/py2envgpu/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 232, in run
self.halt(reason=inst.reason, exit_status=inst.exit_status)
File "/home/SP-in-WEB/xindq/imageStyleTransform/py2envgpu/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 345, in halt
self.stop()
File "/home/SP-in-WEB/xindq/imageStyleTransform/py2envgpu/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 393, in stop
time.sleep(0.1)
File "/home/SP-in-WEB/xindq/imageStyleTransform/py2envgpu/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 245, in handle_chld
self.reap_workers()
File "/home/SP-in-WEB/xindq/imageStyleTransform/py2envgpu/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 525, in reap_workers
raise HaltServer(reason, self.WORKER_BOOT_ERROR)
gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>
- 原因
后台进程,supervisor不能监控 - 解决
使用Gunicorn的守护进程模式。gunicorn -D
2 base64网络安全模式
- 问题
InvalidArgumentError (see above for traceback): Invalid character found in base64.
- 原因
base64中含有+和-符号,网络通讯需要web-safe模式下的base64. - 解决
img_base64 = image_base64.replace('+', '-').replace(r'/', '_')
3 数据库迁移
- 问题
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
- 原因
flask数据库只有一个版本的表,未生成新表。 - 解决
(1) 进入数据库
+-------------------+
| Tables_in_webdata |
+-------------------+
| alembic_version |
| datas |
| projects |
| robots |
| tests |
| users |
+-------------------+
(2) 查看alembic_version
select * from alembic_version
+--------------+
| version_num |
+--------------+
| 54bb4393d149 |
+--------------+
(3) 清空alembic_version
truncate alembic_version
(4) 迁移&更新
python run.py db migrate
# 提示信息
python run.py db migrate
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.autogenerate.compare] Detected added column 'projects.department'
Generating /Users/xindaqi/xinPrj/FlaskPrj/AIWeb/migrations/versions/b1383ba36178_.py ... done
python run.py db upgrade
# 提示信息
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade -> b1383ba36178, empty message
4 python2中文提示错误
- 问题
SyntaxError: Non-ASCII character '\xe5' in file testFunction.py on line 5, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
- 原因
代码中含有中文信息或中文注释. - 解决
代码首行加入编码utf-8
# -*-coding:utf-8-*-
5 numpy.array输出全部数据
- 问题
numpy.array数据较多时,会用省略符号…代替数据,而不输出所有数据; - 原因
numpy.array默认输出数据量有限; - 解决
输出numpy.array数据前,设置输出数据量;
# threshold 表示输出的数据量
np.set_printoptions(threshold=1e6)
6 python3.x ASCII编码错误
- Error
File "/home/SP-in-WEB/xindq/couplets/py3gpu/lib/python3.5/encodings/ascii.py", line 26, in decode
return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128)
- Reason
python3.x编码只有str和unicode,服务器Ubuntu编码规则默认读取ascii码,读取非ascii编码数据,如中文,会报错,需要转换Unicode(万国码)。 - Solve
(1) 读取文件使用Unicode编码
with open("word.txt", 'r',encoding='utf8') as f:
a = f.read()
(2) 字符串使用Unicode
str = "苹果"
str.encode('utf8')
7 python3.x字符str输出
- Demo
str = '苹果'
print('str:' + str.decode('utf8'))
- Error1
'str' object has no attribute 'decode'
- Plan
字符串使用编码属性。
print('str:' + str.encode('utf8'))
- Error2
TypeError: Can't convert 'bytes' object to str implicitly
- Solve
print("str:{}".format(str.encode('utf8')))
说明:
str需编码输出str.encode
bytes需解码输出bytes.decode
8 缩进
- Problem
IndentationError: unindent does not match any outer indentation level
- Reason
缩进出现错误,使用tab
缩进,而不是空格
缩进. - Solve
重新修改问题代码段,使用tab
缩进.
9 pillow图像处理
- Problem
TypeError: unsupported operand type(s) for /: 'PngImageFile' and 'float'
- Reason
我也很无奈啊~,这个图片Pillow就是不能解码,放弃挣扎了. - Solve
换一张图片处理.
10 pip命令失效
10.1 pip(2)
- pip install
Traceback (most recent call last):
File "/usr/bin/pip", line 9, in <module>
from pip import main
ImportError: cannot import name main
- Resolve
cd /usr/bin
sudo vim pip
from pip import main
if __name__ == "__main__":
sys.exit(main())
- Edit
from pip import __main__
if __name__ == "__main__":
sys.exit(__main__._main())
- or Edit
from pip._internal import main
10.2 pip3
- pip3 install
Traceback (most recent call last):
File "/usr/bin/pip3", line 11, in <module>
sys.exit(main())
NameError: name 'main' is not defined
- Resolve
cd /usr/bin
sudo vim pip3
from pip import main
if __name__ == "__main__":
sys.exit(main())
- Edit
from pip import __main__
if __name__ == "__main__":
sys.exit(__main__._main())
- or Edit
from pip._internal import main
[参考文献]
[1]https://blog.csdn.net/zong596568821xp/article/details/80410416