Django-在安装matplotlib之后使用迁移管理命令时出现奇怪的调试输出

问题描述 投票:0回答:1

在Docker容器中运行GeoDjango-已通过pip在Dockerfile中添加了其他库,并且每当我调用任何迁移命令(例如, manage.py showmigrations/makemigrations/migrate

输出如下:

user@host:/src$ ./manage.py showmigrations
CONFIGDIR=/home/django/.config/matplotlib
(private) matplotlib data path: /usr/local/lib/python3.7/site-packages/matplotlib/mpl-data
matplotlib data path: /usr/local/lib/python3.7/site-packages/matplotlib/mpl-data
loaded rc file /usr/local/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
matplotlib version 3.2.1
interactive is False
platform is linux
loaded modules: ['sys', 'builtins', '_frozen_importlib', '_imp', '_thread', '_warnings', '_weakref', 'zipimport', '_frozen_importlib_external', '_io', 'marshal', 'posix', 'encodings', 'codecs', '_codecs', ...

完整的模块清单被删除,继续:

Using fontManager instance from /home/django/.cache/matplotlib/fontlist-v310.json
Loaded backend qt5agg version unknown.
Loaded backend tkagg version unknown.
Loaded backend agg version unknown.
Loaded backend agg version unknown.
Found GEOS DLL: <CDLL '/usr/local/lib/python3.7/site-packages/shapely/.libs/libgeos_c-5031f9ac.so.1.13.1', handle 5608f64e4c40 at 0x7f22a5aaaf10>, using it.
Trying `CDLL(libc.so.6)`
Library path: 'libc.so.6'
DLL: <CDLL 'libc.so.6', handle 7f22c4809000 at 0x7f22aef3b650>
GDAL_DATA not found in environment, set to '/usr/local/lib/python3.7/site-packages/fiona/gdal_data'.
PROJ data files are available at built-in paths
Entering env context: <fiona.env.Env object at 0x7f22a0798450>
Starting outermost env
No GDAL environment exists
New GDAL environment <fiona._env.GDALEnv object at 0x7f22a0798490> created
Logging error handler pushed.
All drivers registered.
GDAL_DATA found in environment: '/usr/local/lib/python3.7/site-packages/fiona/gdal_data'.
PROJ data files are available at built-in paths
Started GDALEnv <fiona._env.GDALEnv object at 0x7f22a0798490>.
Updated existing <fiona._env.GDALEnv object at 0x7f22a0798490> with options {}
Entered env context: <fiona.env.Env object at 0x7f22a0798450>
Exiting env context: <fiona.env.Env object at 0x7f22a0798450>
Cleared existing <fiona._env.GDALEnv object at 0x7f22a0798490> options
Stopping GDALEnv <fiona._env.GDALEnv object at 0x7f22a0798490>.
Error handler popped.
Stopped GDALEnv <fiona._env.GDALEnv object at 0x7f22a0798490>.
Exiting outermost env
Exited env context: <fiona.env.Env object at 0x7f22a0798450>
Could not import boto3, continuing with reduced functionality.
PROJ data files are available at built-in paths

最后,显示正常迁移输出:

admin
 [X] 0001_initial
 [X] 0002_logentry_remove_auto_add
[snipped ...]
user@host:/src$

它在带有gunicorn的生产系统上,未在调试模式下运行。在开发系统上,设置了相同的库,但是在DEBUG模式下,输出正常。开发和生产dockerfile几乎完全相同,源于python:3.7.4-buster。

乍一看,它看起来像一个“ chatty”库,它在加载时会打印所有内容?不确定是否有损坏的东西或是否正常?在gunicorn错误日志中没有问题的迹象。这似乎也只会影响迁移命令,而不会影响其他manage.py命令。

任何提示表示赞赏!

django matplotlib geodjango
1个回答
0
投票

查看我们发现的source for Fiona

log.debug("Entering env context: %r", self)

由于这是debug级消息,因此默认情况下不会显示该消息。这表明已将日志记录配置为记录调试级别的消息。

[这可能是通过您的Django配置(在后台使用logging.dictConfig())或例如一些模块已经运行logging.basicConfig(level=logging.DEBUG)

此外,考虑到某些软件包使用的.pth文件将其自身链接到导入路径的工作方式(它们只是Python),这可能会无意中发生即使软件包本身未导入

我建议一一删除一些软件包,直到发现哪一个引起额外的聊天。

© www.soinside.com 2019 - 2024. All rights reserved.