分类 默认分类 下的文章

Matplotlib 是 Python 中类似 MATLAB 的绘图工具,但在python3中引入Matplotlib ,我遇到几次报错,在此记录一下。
源码如下:

import pandas as pd
import matplotlib.pyplot as plt

air_quality = pd.read_csv("air_quality_no2.csv", index_col=0, parse_dates=True)
print(f'打印空气质量表:\n {air_quality}')

plt.plot(air_quality)
plt.show()

报错一:Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.

解决方案:在引入Matplotlib后加入语句matplotlib.use('TkAgg'),注意要在末尾加,代码如下。

import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
matplotlib.use('TkAgg')  # 加在末尾

air_quality = pd.read_csv("air_quality_no2.csv", index_col=0, parse_dates=True)
print(f'打印空气质量表:\n {air_quality}')

plt.plot(air_quality)
plt.show()

报错二:如上加上matplotlib.use('TkAgg'),不在报之前的错误了
而是报了另一个错误ModuleNotFoundError: No module named 'tkinter''

解决方案:通常这种报错,只要安装并引入相应的包就能解决问题,但是在PyCharm添加软件包中并没有搜索到tkinter包,在终端使用命令pip3 install tkinter来安装,也提示没有这个软件包。

网络搜索了下发现,可以使用如下方法安装:sudo apt install python3-tk,安装之前可以通过命令sudo apt search python3-tk 进行查询是否已经安装过。

安装完成后,重新执行代码,就能正常生成图形了。

在IP后面直接加上 .nip.io 就可以指向该IP访问了,比如 15.165.175.249.nip.io 就会指向这个IP,绑定域名到网站就可以访问

nip.io
Dead simple wildcard DNS for any IP Address
Stop editing your etc/hosts file with custom hostname and IP address mappings.

nip.io allows you to do that by mapping any IP Address to a hostname using the following formats:

Without a name:

10.0.0.1.nip.io maps to 10.0.0.1
192-168-1-250.nip.io maps to 192.168.1.250
0a000803.nip.io maps to 10.0.8.3
With a name:

app.10.8.0.1.nip.io maps to 10.8.0.1
app-116-203-255-68.nip.io maps to 116.203.255.68
app-c0a801fc.nip.io maps to 192.168.1.252
customer1.app.10.0.0.1.nip.io maps to 10.0.0.1
customer2-app-127-0-0-1.nip.io maps to 127.0.0.1
customer3-app-7f000101.nip.io maps to 127.0.1.1
nip.io maps <anything>[.-]<IP Address>.nip.io in "dot", "dash" or "hexadecimal" notation to the corresponding <IP Address>:

dot notation: magic.127.0.0.1.nip.io
dash notation: magic-127-0-0-1.nip.io
hexadecimal notation: magic-7f000001.nip.io
The "dash" and "hexadecimal" notation is especially useful when using services like LetsEncrypt as it's just a regular sub-domain of nip.io

About this service
nip.io is powered by PowerDNS with a simple, custom PipeBackend written in Python: backend.py

It's open source, licensed under Apache 2.0: https://github.com/exentriquesolutions/nip.io — pull requests are welcome.

This is a free service provided by Exentrique Solutions (the same people who run XP-Dev.com which offer Git, Mercurial and Subversion hosting).

Feedback is appreciated, just raise an issue in GitHub .

Troubleshooting
DNS Rebinding Protection
Some DNS resolvers, forwarders and routers have DNS rebinding protection which may result in failure to resolve local and private IP addresses. This service won't work in those situations.

Related Services
localtls: A DNS server in Python3 to provide TLS to webservices on local addresses. It resolves addresses such as '192-168-0-1.yourdomain.net' to 192.168.0.1 and has a valid TLS certificate for them.
sslip.io: Alternative to this service, supports IPv6 and custom domains.
local.gd: Alternative to this service, where everything is mapped to localhost/127.0.0.1.

<html>
 
<head>
<title>HTML显示json字符串并且进行格式化</title>
</head>
 
<body>
<p id="show_p">{ "name": "Brett", "address":"北京路23号", "email": "123456@qq.com" }</p>
<pre id="out_pre"></pre>
 
</body>
<script type="text/javascript">
 
  var text = document.getElementById('show_p').innerText; //获取json格式内容
  
   var result = JSON.stringify(JSON.parse(text), null, 2);//将字符串转换成json对象
 
   document.getElementById('out_pre').innerText= result ;
  
 
</script>
 
</html>

安装 supervisor

sudo pip2.7 install supervisor

查看 supervisor 的最新版本和文件列表

pip2.7 show -f supervisor

可以看到 Location 是 /usr/local/lib/python2.7/site-packages,和Files的前几个文件

  ../../../bin/echo_supervisord_conf
  ../../../bin/pidproxy
  ../../../bin/supervisorctl
  ../../../bin/supervisord

其中../../../相对路径/usr/local/lib/python2.7/site-packages得到绝对路径是:/usr/local
那前四个文件的绝对路径是:

/usr/local/bin/echo_supervisord_conf
/usr/local/bin/pidproxy
/usr/local/bin/supervisorctl
/usr/local/bin/supervisord

生成 supervisor 的配置文件

echo_supervisord_conf | sudo tee /etc/supervisord.conf

如果是root用户可以用

echo_supervisord_conf > /etc/supervisord.conf

如果提示 -bash: echo_supervisord_conf: command not found说明/usr/local/bin没有添加到visudo的secure_path内,解决方法是:

编辑visudo

sudo visudo

找到 secure_path这一行

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin

添加/usr/local/sbin和/usr/local/bin,变成这样

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin

保存编辑即可

创建一个配置文件夹,多个服务的配置文件单独放置

sudo mkdir -p /etc/supervisor.d

修改配置文件

sudo vim /etc/supervisord.conf

找到 ;[include]去掉;变成[include]

找到[include]下面的;files去掉;变成files

将files = relative/directory/.ini改成files = /etc/supervisor.d/.conf

其它配置默认即可,保存修改

添加 /etc/init.d/supervisor 开机启动

sudo vim /etc/init.d/supervisord

添加内容:

#!/bin/sh
#
# /etc/rc.d/init.d/supervisord
#
# Supervisor is a client/server system that
# allows its users to monitor and control a
# number of processes on UNIX-like operating
# systems.
#
# chkconfig: - 64 36
# description: Supervisor Server
# processname: supervisord

# Source init functions
. /etc/rc.d/init.d/functions

prog="supervisord"

prefix="/usr/local"
exec_prefix="${prefix}"
prog_bin="${exec_prefix}/bin/supervisord"
PIDFILE="/var/run/$prog.pid"
conf="/etc/supervisord.conf"

start()
{
        echo -n $"Starting $prog: "
        daemon $prog_bin --pidfile $PIDFILE -c $conf
        [ -f $PIDFILE ] && success $"$prog startup" || failure $"$prog startup"
        echo
}

stop()
{
        echo -n $"Shutting down $prog: "
        [ -f $PIDFILE ] && killproc $prog || success $"$prog shutdown"
        echo
}

case "$1" in

  start)
    start
  ;;

  stop)
    stop
  ;;

  status)
        status $prog
  ;;

  restart)
    stop
    start
  ;;

  *)
    echo "Usage: $0 {start|stop|restart|status}"
  ;;

esac

增加可执行权限

sudo chmod +x /etc/init.d/supervisord

centos 添加开机启动

sudo chkconfig --add supervisord
sudo chkconfig --level 2345 supervisord on

启动 supervisord

sudo /etc/init.d/supervisord start

Options

Core options

Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-, as in data-style="" or data-selected-text-format="count".

Note: For security reasons, the sanitize, sanitizeFn and whiteList options cannot be supplied using data attributes.

Name    Type    Default    Description
actionsBox    boolean    false    
When set to true, adds two buttons to the top of the dropdown menu (Select All & Deselect All).
container    string | false    false    
When set to a string, appends the select to a specific element or selector, e.g., container: 'body' | '.main-body'
countSelectedText    string | function    function    
Sets the format for the text displayed when selectedTextFormat is count or count > #. {0} is the selected amount. {1} is total available for selection.

When set to a function, the first parameter is the number of selected options, and the second is the total number of options. The function must return a string.
deselectAllText    string    'Deselect All'    
The text on the button that deselects all options when actionsBox is enabled.
dropdownAlignRight    boolean | 'auto'    false    
Align the menu to the right instead of the left. If set to 'auto', the menu will automatically align right if there isn't room for the menu's full width when aligned to the left.
dropupAuto    boolean    true    
checks to see which has more room, above or below. If the dropup has enough room to fully open normally, but there is more room above, the dropup still opens normally. Otherwise, it becomes a dropup. If dropupAuto is set to false, dropups must be called manually.
header    string    false    
adds a header to the top of the menu; includes a close button by default
hideDisabled    boolean    false    
removes disabled options and optgroups from the menu data-hide-disabled: true
iconBase    string    'glyphicon'    
Set the base to use a different icon font instead of Glyphicons. If changing iconBase, you might also want to change tickIcon, in case the new icon font uses a different naming scheme.
liveSearch    boolean    false    
When set to true, adds a search box to the top of the selectpicker dropdown.
liveSearchNormalize    boolean    false    
Setting liveSearchNormalize to true allows for accent-insensitive searching.
liveSearchPlaceholder    string    null    
When set to a string, a placeholder attribute equal to the string will be added to the liveSearch input.
liveSearchStyle    string    'contains'    
When set to 'contains', searching will reveal options that contain the searched text. For example, searching for pl with return both Apple, Plum, and Plantain. When set to 'startsWith', searching for pl will return only Plum and Plantain.
maxOptions    integer | false    false    
When set to an integer and in a multi-select, the number of selected options cannot exceed the given value.

This option can also exist as a data-attribute for an <optgroup>, in which case it only applies to that <optgroup>.
maxOptionsText    string | array | function    function    
The text that is displayed when maxOptions is enabled and the maximum number of options for the given scenario have been selected.

If a function is used, it must return an array. array[0] is the text used when maxOptions is applied to the entire select element. array[1] is the text used when maxOptions is used on an optgroup. If a string is used, the same text is used for both the element and the optgroup.
mobile    boolean    false    
When set to true, enables the device's native menu for select menus.
multipleSeparator    string    ', '    
Set the character displayed in the button that separates selected options.
noneSelectedText    string    'Nothing selected'    
The text that is displayed when a multiple select has no selected options.
noneResultsText    string    'No results matched {0}'    
The text displayed when a search doesn't return any results.
selectAllText    string    'Select All'    
The text on the button that selects all options when actionsBox is enabled.
selectedTextFormat    'values' | 'static' | 'count' | 'count > x' (where x is an integer)    'values'    
Specifies how the selection is displayed with a multiple select.

'values' displays a list of the selected options (separated by multipleSeparator. 'static' simply displays the select element's title. 'count' displays the total number of selected options. 'count > x' behaves like 'values' until the number of selected options is greater than x; after that, it behaves like 'count'.
selectOnTab    boolean    false    
When set to true, treats the tab character like the enter or space characters within the selectpicker dropdown.
showContent    boolean    true    
When set to true, display custom HTML associated with selected option(s) in the button. When set to false, the option value will be displayed instead.
showIcon    boolean    true    
When set to true, display icon(s) associated with selected option(s) in the button.
showSubtext    boolean    false    
When set to true, display subtext associated with a selected option in the button.
showTick    boolean    false    
Show checkmark on selected option (for items without multiple attribute).
size    'auto' | integer | false    'auto'    
When set to 'auto', the menu always opens up to show as many items as the window will allow without being cut off.

When set to an integer, the menu will show the given number of items, even if the dropdown is cut off.

When set to false, the menu will always show all items.
style    string | null    Bootstrap 4: 'btn-light' Bootstrap 3: 'btn-default'    
When set to a string, add the value to the button's style.
styleBase    string | null    'btn'    
The default class applied to the button. When using the setStyle method, this class will always remain.

Hint: If you want to style the element as a form control, set style to '' and styleBase to 'form-control'.
tickIcon    string    'glyphicon-ok'    
Set which icon to use to display as the "tick" next to selected options.
title    string | null    null    
The default title for the selectpicker.
virtualScroll    boolean | integer    600    
If enabled, the items in the dropdown will be rendered using virtualization (i.e. only the items that are within the viewport will be rendered). This drastically improves performance for selects with a large number of options. Set to an integer to only use virtualization if the select has at least that number of options.
width    'auto' | 'fit' | css-width | false (where css-width is a CSS width with units, e.g. 100px)    false    
When set to auto, the width of the selectpicker is automatically adjusted to accommodate the widest option.

When set to a css-width, the width of the selectpicker is forced inline to the given value.

When set to false, all width information is removed.
windowPadding    integer | array    0    
This is useful in cases where the window has areas that the dropdown menu should not cover - for instance a fixed header. When set to an integer, the same padding will be added to all sides. Alternatively, an array of integers can be used in the format [top, right, bottom, left].
sanitize    boolean    true    
Enable or disable the sanitization. If activated, 'data-content' on individual options will be sanitized.
whiteList    object    Default value    
Object which contains allowed attributes and tags
sanitizeFn    null | function    null    
Here you can supply your own sanitize function. This can be useful if you prefer to use a dedicated library to perform sanitization.

Default settings

You can change the default settings for bootstrap-select by modifying its Constructor.DEFAULTS object:

$.fn.selectpicker.Constructor.DEFAULTS.multipleSeparator = ' | ';

Events

Bootstrap-select exposes a few events for hooking into select functionality.

hide.bs.select, hidden.bs.select, show.bs.select, and shown.bs.select all have a relatedTarget property, whose value is the toggling anchor element.

Event Type    Description
show.bs.select    This event fires immediately when the show instance method is called.
shown.bs.select    This event is fired when the dropdown has been made visible to the user (will wait for CSS transitions, to complete).
hide.bs.select    This event is fired immediately when the hide instance method has been called.
hidden.bs.select    This event is fired when the dropdown has finished being hidden from the user (will wait for CSS transitions, to complete).
loaded.bs.select    This event fires after the select has been initialized.
rendered.bs.select    This event fires after the render instance has been called.
refreshed.bs.select    This event fires after the refresh instance has been called.
changed.bs.select    
This event fires after the select's value has been changed. It passes through event, clickedIndex, isSelected, previousValue.

previousValue is the value of the select prior to being changed. If the select's value has been changed either via the .selectpicker('val'), .selectpicker('selectAll'), or .selectpicker('deselectAll') methods, clickedIndex and isSelected will be null.

Methods

.selectpicker('val')
.selectpicker('selectAll')
.selectpicker('deselectAll')
.selectpicker('render')
.selectpicker('mobile')
.selectpicker('setStyle')
.selectpicker('refresh')
.selectpicker('toggle')
.selectpicker('hide')
.selectpicker('show')
.selectpicker('destroy')