我过去两天一直试图将我的Bokeh服务器应用程序部署到Heroku。我参加了Heroku网站文档中提到的流程。我的Boke Server应用程序包含与SQL Server的连接,从中获取数据。我陷入了数据库连接的困境。我最初得到了SQL Server Connection的PyODBC方法,但却遇到了fatal error: 'sql.h'
错误,这项研究让我采用了pymssql
的方法。这是我目前的代码
from bokeh.plotting import output_file
from bokeh.plotting import gmap
from bokeh.io import curdoc
from bokeh.models import Button, GMapOptions, ColumnDataSource, CategoricalColorMapper
from bokeh.models import *
from bokeh.layouts import column, row
import pandas as pd
import numpy as np
import pymssql
# parameters
server = 'X.X.X.X\PQR'
db = 'ABC'
# Create the connection
conn = pymssql.connect(database = db, host = server)
cur = conn.cursor()
map_options = GMapOptions(lat=37.686293, lng=-97.3614409, map_type="roadmap", zoom=13)
p = gmap("My Google Maps API Key", map_options, title="Resolutions Clients", plot_width=1000, plot_height=600)
sql = """
with CTE AS
(SELECT
CR.ClientID, CR.Latitude, CR.Longtitude
FROM
Company C LEFT JOIN ClientRegistration CR on C.CompanyID = CR.CompanyID
WHERE
C.CompanyID = 555 AND (CR.Latitude IS NOT NULL AND CR.Longtitude IS NOT NULL)
)
SELECT
C.ClientID, C.Latitude, C.Longtitude, CL.Sex
FROM
CTE C LEFT JOIN Clients CL on C.ClientID = CL.ClientID
"""
df = pd.read_sql(sql, conn)
df[['Latitude', 'Longtitude']] = df[['Latitude', 'Longtitude']].apply(pd.to_numeric)
df['Sex'] = df['Sex'].astype('str')
map_options = GMapOptions(lat=37.686293, lng=-97.3614409, map_type="roadmap", zoom=10)
p = gmap("My Google Maps API Key", map_options, title="Resolutions Clients Genderwise", plot_width=1000,
plot_height=600)
lat = df['Latitude'].tolist()
lon = df['Longtitude'].tolist()
sex = df['Sex'].tolist()
source = ColumnDataSource(
data=dict(latitude=lat,
longitude=lon,
gender=sex
)
)
color_mapper = CategoricalColorMapper(factors=['M', 'F', 'U'], palette=['Red', 'Blue', 'Green'])
p.circle(x="longitude", y="latitude", size=4, fill_alpha=0.9, source=source,
fill_color={'field': 'gender', 'transform': color_mapper},
line_color={'field': 'gender', 'transform': color_mapper})
x = np.linspace(0, 4 * np.pi, 100)
y = np.sin(x)
p.circle(x, y, legend="Male", color="red")
p.circle(x, 2 * y, legend="Female", color="Blue")
p.circle(x, 3 * y, legend="Unknown", color="Green")
def update():
# query db
curdoc().clear()
sql = """
with CTE AS
(SELECT
CR.ClientID, CR.Latitude, CR.Longtitude
FROM
Company C LEFT JOIN ClientRegistration CR on C.CompanyID = CR.CompanyID
WHERE
C.CompanyID = 555 AND (CR.Latitude IS NOT NULL AND CR.Longtitude IS NOT NULL)
)
SELECT
C.ClientID, C.Latitude, C.Longtitude,
CASE WHEN age > 0 AND age <= 15 THEN 'Children'
WHEN age > 15 AND age <= 30 THEN 'Young Adult'
WHEN age > 30 AND age <= 55 THEN 'Adult'
WHEN age > 55 THEN 'Senior Citizen'
END AS 'Age_Group'
FROM
CTE C LEFT JOIN Clients CL on C.ClientID = CL.ClientID
"""
df = pd.read_sql(sql, conn)
df[['Latitude', 'Longtitude']] = df[['Latitude', 'Longtitude']].apply(pd.to_numeric)
df['Age_Group'] = df['Age_Group'].astype('str')
df['Latitude'].median()
df['Longtitude'].median()
map_options = GMapOptions(lat=37.686293, lng=-97.3614409, map_type="roadmap", zoom=10)
p = gmap("My Google Maps API Key", map_options, title="Resolutions Clients Age wise",
plot_width=1000, plot_height=600)
lat = df['Latitude'].tolist()
lon = df['Longtitude'].tolist()
age = df['Age_Group'].tolist()
source = ColumnDataSource(
data=dict(latitude=lat,
longitude=lon,
age_Group=age
)
)
color_mapper = CategoricalColorMapper(factors=['Children', 'Young Adult', 'Adult', 'Senior Citizen'],
palette=['Red', 'Blue', 'Green', 'Yellow'])
p.add_tools(LassoSelectTool())
p.add_tools(ZoomInTool())
p.add_tools(ZoomOutTool())
p.circle(x="longitude", y="latitude", size=4, fill_alpha=0.9, source=source,
fill_color={'field': 'age_Group', 'transform': color_mapper},
line_color={'field': 'age_Group', 'transform': color_mapper})
x = np.linspace(0, 4 * np.pi, 100)
y = np.sin(x)
p.circle(x, y, legend="Children : Age <= 15", color="red")
p.circle(x, 2 * y, legend="Young Adult : 30 >= Age > 15", color="Blue")
p.circle(x, 3 * y, legend="Adult : 55 >= Age > 30 ", color="Green")
p.circle(x, 4 * y, legend="Senior Citizen : Age > 55", color="Yellow")
curdoc().add_root(row(button1, button2))
curdoc().add_root(column(p))
def update1():
# query db
curdoc().clear()
sql = """
with CTE AS
(SELECT
CR.ClientID, CR.Latitude, CR.Longtitude
FROM
Company C LEFT JOIN ClientRegistration CR on C.CompanyID = CR.CompanyID
WHERE
C.CompanyID = 555 AND (CR.Latitude IS NOT NULL AND CR.Longtitude IS NOT NULL)
)
SELECT
C.ClientID, C.Latitude, C.Longtitude, CL.Sex
FROM
CTE C LEFT JOIN Clients CL on C.ClientID = CL.ClientID
"""
df = pd.read_sql(sql, conn)
df[['Latitude', 'Longtitude']] = df[['Latitude', 'Longtitude']].apply(pd.to_numeric)
df['Sex'] = df['Sex'].astype('str')
map_options = GMapOptions(lat=37.686293, lng=-97.3614409, map_type="roadmap", zoom=10)
p = gmap("My Google Maps API Key", map_options, title="Resolutions Clients Genderwise",
plot_width=1000,
plot_height=600)
lat = df['Latitude'].tolist()
lon = df['Longtitude'].tolist()
sex = df['Sex'].tolist()
source = ColumnDataSource(
data=dict(latitude=lat,
longitude=lon,
gender=sex
)
)
color_mapper = CategoricalColorMapper(factors=['M', 'F', 'U'], palette=['Red', 'Blue', 'Green'])
p.circle(x="longitude", y="latitude", size=4, fill_alpha=0.9, source=source,
fill_color={'field': 'gender', 'transform': color_mapper},
line_color={'field': 'gender', 'transform': color_mapper})
x = np.linspace(0, 4 * np.pi, 100)
y = np.sin(x)
p.circle(x, y, legend="Male", color="red")
p.circle(x, 2 * y, legend="Female", color="Blue")
p.circle(x, 3 * y, legend="Unknown", color="Green")
curdoc().add_root(row(button1, button2))
curdoc().add_root(column(p))
# add a button widget and configure with the call back
button1 = Button(label="Gender")
button2 = Button(label="Age")
button1.on_click(update1)
button2.on_click(update)
# put the button and plot in a layout and add to the document
curdoc().add_root(row(button1, button2))
curdoc().add_root(column(p))
我的Procfile看起来像
web: bokeh serve --port=$PORT --num-procs=0 --host=myapp.herokuapp.com --address=0.0.0.0 --use-xheaders myapp.py
我的requirements.txt文件看起来像
bokeh==0.12.16
numpy==1.14.3
pandas==0.23.0
pip==9.0.1
tornado==5.0.2
Werkzeug==0.14.1
我的runtime.txt文件看起来像
python-3.6.5
git push heroku master
之后的当前日志,
remote: mv -f .deps/awkgram.Tpo .deps/awkgram.Po
remote: cc -DDEFPATH='".:/app/share/awk"' -DHAVE_CONFIG_H -DGAWK -DLOCALE
DIR='"/app/share/locale"' -I. -g -MT builtin.o -MD -MP -MF .deps/builtin.Tpo
-c -o builtin.o builtin.c
remote: builtin.c: In function `format_tree':
remote: builtin.c:797:6: warning: format not a string literal and no format argu
ments [-Wformat-security]
remote: lintwarn(msg);
remote: ^
remote: mv -f .deps/builtin.Tpo .deps/builtin.Po
remote: cc -DDEFPATH='".:/app/share/awk"' -DHAVE_CONFIG_H -DGAWK -DLOCALE
DIR='"/app/share/locale"' -I. -g -MT dfa.o -MD -MP -MF .deps/dfa.Tpo -c -o d
fa.o dfa.c
remote: mv -f .deps/dfa.Tpo .deps/dfa.Po
remote: cc -DDEFPATH='".:/app/share/awk"' -DHAVE_CONFIG_H -DGAWK -DLOCALE
DIR='"/app/share/locale"' -I. -g -MT ext.o -MD -MP -MF .deps/ext.Tpo -c -o e
xt.o ext.c
remote: mv -f .deps/ext.Tpo .deps/ext.Po
remote: cc -DDEFPATH='".:/app/share/awk"' -DHAVE_CONFIG_H -DGAWK -DLOCALE
DIR='"/app/share/locale"' -I. -g -MT field.o -MD -MP -MF .deps/field.Tpo -c
-o field.o field.c
remote: mv -f .deps/field.Tpo .deps/field.Po
remote: cc -DDEFPATH='".:/app/share/awk"' -DHAVE_CONFIG_H -DGAWK -DLOCALE
DIR='"/app/share/locale"' -I. -g -MT floatcomp.o -MD -MP -MF .deps/floatcomp
.Tpo -c -o floatcomp.o floatcomp.c
remote: mv -f .deps/floatcomp.Tpo .deps/floatcomp.Po
remote: cc -DDEFPATH='".:/app/share/awk"' -DHAVE_CONFIG_H -DGAWK -DLOCALE
DIR='"/app/share/locale"' -I. -g -MT gawkmisc.o -MD -MP -MF .deps/gawkmisc.T
po -c -o gawkmisc.o gawkmisc.c
remote: mv -f .deps/gawkmisc.Tpo .deps/gawkmisc.Po
remote: cc -DDEFPATH='".:/app/share/awk"' -DHAVE_CONFIG_H -DGAWK -DLOCALE
DIR='"/app/share/locale"' -I. -g -MT getopt.o -MD -MP -MF .deps/getopt.Tpo -
c -o getopt.o getopt.c
remote: mv -f .deps/getopt.Tpo .deps/getopt.Po
remote: cc -DDEFPATH='".:/app/share/awk"' -DHAVE_CONFIG_H -DGAWK -DLOCALE
DIR='"/app/share/locale"' -I. -g -MT getopt1.o -MD -MP -MF .deps/getopt1.Tpo
-c -o getopt1.o getopt1.c
remote: mv -f .deps/getopt1.Tpo .deps/getopt1.Po
remote: cc -DDEFPATH='".:/app/share/awk"' -DHAVE_CONFIG_H -DGAWK -DLOCALE
DIR='"/app/share/locale"' -I. -g -MT io.o -MD -MP -MF .deps/io.Tpo -c -o io.
o io.c
remote: mv -f .deps/io.Tpo .deps/io.Po
remote: cc -DDEFPATH='".:/app/share/awk"' -DHAVE_CONFIG_H -DGAWK -DLOCALE
DIR='"/app/share/locale"' -I. -g -MT main.o -MD -MP -MF .deps/main.Tpo -c -o
main.o main.c
remote: mv -f .deps/main.Tpo .deps/main.Po
remote: cc -DDEFPATH='".:/app/share/awk"' -DHAVE_CONFIG_H -DGAWK -DLOCALE
DIR='"/app/share/locale"' -I. -g -MT msg.o -MD -MP -MF .deps/msg.Tpo -c -o m
sg.o msg.c
remote: mv -f .deps/msg.Tpo .deps/msg.Po
remote: cc -DDEFPATH='".:/app/share/awk"' -DHAVE_CONFIG_H -DGAWK -DLOCALE
DIR='"/app/share/locale"' -I. -g -MT node.o -MD -MP -MF .deps/node.Tpo -c -o
node.o node.c
remote: mv -f .deps/node.Tpo .deps/node.Po
remote: cc -DDEFPATH='".:/app/share/awk"' -DHAVE_CONFIG_H -DGAWK -DLOCALE
DIR='"/app/share/locale"' -I. -g -MT random.o -MD -MP -MF .deps/random.Tpo -
c -o random.o random.c
remote: mv -f .deps/random.Tpo .deps/random.Po
remote: cc -DDEFPATH='".:/app/share/awk"' -DHAVE_CONFIG_H -DGAWK -DLOCALE
DIR='"/app/share/locale"' -I. -g -MT re.o -MD -MP -MF .deps/re.Tpo -c -o re.
o re.c
remote: mv -f .deps/re.Tpo .deps/re.Po
remote: cc -DDEFPATH='".:/app/share/awk"' -DHAVE_CONFIG_H -DGAWK -DLOCALE
DIR='"/app/share/locale"' -I. -g -MT regex.o -MD -MP -MF .deps/regex.Tpo -c
-o regex.o regex.c
remote: mv -f .deps/regex.Tpo .deps/regex.Po
remote: cc -DDEFPATH='".:/app/share/awk"' -DHAVE_CONFIG_H -DGAWK -DLOCALE
DIR='"/app/share/locale"' -I. -g -MT replace.o -MD -MP -MF .deps/replace.Tpo
-c -o replace.o replace.c
remote: mv -f .deps/replace.Tpo .deps/replace.Po
remote: /bin/bash ./config.status --file=version.c:version.in
remote: config.status: creating version.c
remote: cc -DDEFPATH='".:/app/share/awk"' -DHAVE_CONFIG_H -DGAWK -DLOCALE
DIR='"/app/share/locale"' -I. -g -MT version.o -MD -MP -MF .deps/version.Tpo
-c -o version.o version.c
remote: mv -f .deps/version.Tpo .deps/version.Po
remote: cc -DDEFPATH='".:/app/share/awk"' -DHAVE_CONFIG_H -DGAWK -DLOCALE
DIR='"/app/share/locale"' -I. -g -MT eval.o -MD -MP -MF .deps/eval.Tpo -c -o
eval.o eval.c
remote: mv -f .deps/eval.Tpo .deps/eval.Po
remote: cc -DDEFPATH='".:/app/share/awk"' -DHAVE_CONFIG_H -DGAWK -DLOCALE
DIR='"/app/share/locale"' -I. -g -MT profile.o -MD -MP -MF .deps/profile.Tpo
-c -o profile.o profile.c
remote: mv -f .deps/profile.Tpo .deps/profile.Po
remote: cc -g -export-dynamic -o gawk array.o awkgram.o builtin.o dfa.o
ext.o field.o floatcomp.o gawkmisc.o getopt.o getopt1.o io.o main.o msg.o node.
o random.o re.o regex.o replace.o version.o eval.o profile.o -ldl -lm -lm
remote: cc -DDEFPATH='".:/app/share/awk"' -DHAVE_CONFIG_H -DGAWK -DLOCALE
DIR='"/app/share/locale"' -I. -g -MT eval_p.o -MD -MP -MF .deps/eval_p.Tpo -
c -o eval_p.o eval_p.c
remote: mv -f .deps/eval_p.Tpo .deps/eval_p.Po
remote: cc -DDEFPATH='".:/app/share/awk"' -DHAVE_CONFIG_H -DGAWK -DLOCALE
DIR='"/app/share/locale"' -I. -g -MT profile_p.o -MD -MP -MF .deps/profile_p
.Tpo -c -o profile_p.o profile_p.c
remote: mv -f .deps/profile_p.Tpo .deps/profile_p.Po
remote: cc -g -export-dynamic -o pgawk array.o awkgram.o builtin.o dfa.
o ext.o field.o floatcomp.o gawkmisc.o getopt.o getopt1.o io.o main.o msg.o node
.o random.o re.o regex.o replace.o version.o eval_p.o profile_p.o -ldl -lm -l
m
remote: make[2]: Leaving directory '/app/.vendor/gawk'
remote: Making all in awklib
remote: make[2]: Entering directory '/app/.vendor/gawk/awklib'
remote: cc -DHAVE_CONFIG_H -I. -I.. -I.. -I.. -g ./eg/lib/pwcat.c -exp
ort-dynamic -o pwcat
remote: cc -DHAVE_CONFIG_H -I. -I.. -I.. -I.. -g ./eg/lib/grcat.c -exp
ort-dynamic -o grcat
remote: cp ./eg/prog/igawk.sh igawk ; chmod 755 igawk
remote: sed 's;/usr/local/libexec/awk;/app/libexec/awk;' < ./eg/lib/passw
dawk.in > passwd.awk
remote: sed 's;/usr/local/libexec/awk;/app/libexec/awk;' < ./eg/lib/group
awk.in > group.awk
remote: make[2]: Leaving directory '/app/.vendor/gawk/awklib'
remote: Making all in doc
remote: make[2]: Entering directory '/app/.vendor/gawk/doc'
remote: restore=: && backupdir=".am$$" && \
remote: am__cwd=`pwd` && CDPATH="${ZSH_VERSION+.}:" && cd . && \
remote: rm -rf $backupdir && mkdir $backupdir && \
remote: if (/bin/bash /app/.vendor/gawk/missing --run makeinfo --no-split
--force --version) >/dev/null 2>&1; then \
remote: for f in gawk.info gawk.info-[0-9] gawk.info-[0-9][0-9] gawk.i[
0-9] gawk.i[0-9][0-9]; do \
remote: if test -f $f; then mv $f $backupdir; restore=mv; else :; fi;
\
remote: done; \
remote: else :; fi && \
remote: cd "$am__cwd"; \
remote: if /bin/bash /app/.vendor/gawk/missing --run makeinfo --no-split
--force -I . \
remote: -o gawk.info gawk.texi; \
remote: then \
remote: rc=0; \
remote: CDPATH="${ZSH_VERSION+.}:" && cd .; \
remote: else \
remote: rc=$?; \
remote: CDPATH="${ZSH_VERSION+.}:" && cd . && \
remote: $restore $backupdir/* `echo "./gawk.info" | sed 's|[^/]*$||'`;
\
remote: fi; \
remote: rm -rf $backupdir; exit $rc
remote: /app/.vendor/gawk/missing: line 54: makeinfo: command not found
remote: WARNING: `makeinfo' is missing on your system. You should only need it
if
remote: you modified a `.texi' or `.texinfo' file, or any other file
remote: indirectly affecting the aspect of the manual. The spurious
remote: call might also be the consequence of using a buggy `make' (AIX
,
remote: DU, IRIX). You might want to install the `Texinfo' package or
remote: the `GNU make' package. Grab either from any GNU archive site.
remote: make[2]: Leaving directory '/app/.vendor/gawk/doc'
remote: Making all in po
remote: make[2]: Entering directory '/app/.vendor/gawk/po'
remote: make[2]: Leaving directory '/app/.vendor/gawk/po'
remote: Making all in test
remote: make[2]: Entering directory '/app/.vendor/gawk/test'
remote: files=`cd "." && echo *.awk *.in`; \
remote: LC_ALL=${GAWKLOCALE:-C} LANG=${GAWKLOCALE:-C} ../gawk -f ./Gentes
ts "./Makefile.am" $files > ./Maketests
remote: WARNING: unused file `longdbl.in'.
remote: WARNING: unused file `longdbl.awk'.
remote: cd .. && /bin/bash /app/.vendor/gawk/missing --run automake-1.11
--gnu test/Makefile
remote: /app/.vendor/gawk/missing: line 54: automake-1.11: command not found
remote: WARNING: `automake-1.11' is missing on your system. You should only nee
d it if
remote: you modified `Makefile.am', `acinclude.m4' or `configure.ac'.
remote: You might want to install the `Automake' and `Perl' packages.
remote: Grab them from any GNU archive site.
remote: cd .. && /bin/bash ./config.status test/Makefile
remote: config.status: creating test/Makefile
remote: make[2]: Nothing to be done for 'all'.
remote: make[2]: Leaving directory '/app/.vendor/gawk/test'
remote: make[1]: Leaving directory '/app/.vendor/gawk'
remote: cd . && /bin/bash ./config.status Makefile depfiles
remote: config.status: creating Makefile
remote: config.status: executing depfiles commands
remote: Making install in .
remote: make[1]: Entering directory '/app/.vendor/gawk'
remote: make[2]: Entering directory '/app/.vendor/gawk'
remote: test -z "/app/bin" || /bin/mkdir -p "/app/bin"
remote: ./install-sh -c gawk pgawk '/app/bin'
remote: make 'CFLAGS=-g' 'LDFLAGS=-export-dynamic' install-exec-hook
remote: make[3]: Entering directory '/app/.vendor/gawk'
remote: (cd /app/bin; \
remote: ln gawk gawk-3.1.8 2>/dev/null ; \
remote: ln pgawk pgawk-3.1.8 2>/dev/null ; \
remote: if [ ! -f awk ]; \
remote: then ln -s gawk awk; \
remote: fi; exit 0)
remote: make[3]: Leaving directory '/app/.vendor/gawk'
remote: make[2]: Nothing to be done for 'install-data-am'.
remote: make[2]: Leaving directory '/app/.vendor/gawk'
remote: make[1]: Leaving directory '/app/.vendor/gawk'
remote: Making install in awklib
remote: make[1]: Entering directory '/app/.vendor/gawk/awklib'
remote: cd .. && /bin/bash ./config.status awklib/Makefile depfiles
remote: config.status: creating awklib/Makefile
remote: config.status: executing depfiles commands
remote: make[2]: Entering directory '/app/.vendor/gawk/awklib'
remote: test -z "/app/bin" || /bin/mkdir -p "/app/bin"
remote: .././install-sh -c igawk '/app/bin'
remote: test -z "/app/libexec/awk" || /bin/mkdir -p "/app/libexec/awk"
remote: .././install-sh -c pwcat grcat '/app/libexec/awk'
remote: make install-exec-hook
remote: make[3]: Entering directory '/app/.vendor/gawk/awklib'
remote: /bin/bash ../mkinstalldirs /app/share/awk
remote: mkdir -p -- /app/share/awk
remote: for i in passwd.awk group.awk ./eg/lib/*.awk ; do \
remote: progname=`echo $i | sed 's;.*/;;'` ; \
remote: .././install-sh -c -m 644 $i /app/share/awk/$progname ; \
remote: done
remote: make[3]: Leaving directory '/app/.vendor/gawk/awklib'
remote: make[2]: Nothing to be done for 'install-data-am'.
remote: make[2]: Leaving directory '/app/.vendor/gawk/awklib'
remote: make[1]: Leaving directory '/app/.vendor/gawk/awklib'
remote: Making install in doc
remote: make[1]: Entering directory '/app/.vendor/gawk/doc'
remote: cd .. && /bin/bash ./config.status doc/Makefile
remote: config.status: creating doc/Makefile
remote: make[2]: Entering directory '/app/.vendor/gawk/doc'
remote: make[2]: Nothing to be done for 'install-exec-am'.
remote: test -z "/app/share/info" || /bin/mkdir -p "/app/share/info"
remote: .././install-sh -c -m 644 ./gawk.info ./gawkinet.info '/app/shar
e/info'
remote: test -z "/app/share/man/man1" || /bin/mkdir -p "/app/share/man/ma
n1"
remote: .././install-sh -c -m 644 gawk.1 igawk.1 '/app/share/man/man1'
remote: make install-data-hook
remote: make[3]: Entering directory '/app/.vendor/gawk/doc'
remote: (cd /app/share/man/man1; \
remote: ln gawk.1 pgawk.1 2>/dev/null ; \
remote: exit 0)
remote: make[3]: Leaving directory '/app/.vendor/gawk/doc'
remote: make[2]: Leaving directory '/app/.vendor/gawk/doc'
remote: make[1]: Leaving directory '/app/.vendor/gawk/doc'
remote: Making install in po
remote: make[1]: Entering directory '/app/.vendor/gawk/po'
remote: /bin/mkdir -p /app/share
remote: installing es.gmo as /app/share/locale/es/LC_MESSAGES/gawk.mo
remote: installing fr.gmo as /app/share/locale/fr/LC_MESSAGES/gawk.mo
remote: installing he.gmo as /app/share/locale/he/LC_MESSAGES/gawk.mo
remote: installing id.gmo as /app/share/locale/id/LC_MESSAGES/gawk.mo
remote: installing it.gmo as /app/share/locale/it/LC_MESSAGES/gawk.mo
remote: installing sv.gmo as /app/share/locale/sv/LC_MESSAGES/gawk.mo
remote: installing tr.gmo as /app/share/locale/tr/LC_MESSAGES/gawk.mo
remote: installing de.gmo as /app/share/locale/de/LC_MESSAGES/gawk.mo
remote: installing da.gmo as /app/share/locale/da/LC_MESSAGES/gawk.mo
remote: installing pt_BR.gmo as /app/share/locale/pt_BR/LC_MESSAGES/gawk.
mo
remote: installing ca.gmo as /app/share/locale/ca/LC_MESSAGES/gawk.mo
remote: installing pl.gmo as /app/share/locale/pl/LC_MESSAGES/gawk.mo
remote: installing ja.gmo as /app/share/locale/ja/LC_MESSAGES/gawk.mo
remote: installing ro.gmo as /app/share/locale/ro/LC_MESSAGES/gawk.mo
remote: installing nl.gmo as /app/share/locale/nl/LC_MESSAGES/gawk.mo
remote: installing rw.gmo as /app/share/locale/rw/LC_MESSAGES/gawk.mo
remote: installing ga.gmo as /app/share/locale/ga/LC_MESSAGES/gawk.mo
remote: installing vi.gmo as /app/share/locale/vi/LC_MESSAGES/gawk.mo
remote: installing zh_CN.gmo as /app/share/locale/zh_CN/LC_MESSAGES/gawk.
mo
remote: installing ast.gmo as /app/share/locale/ast/LC_MESSAGES/gawk.mo
remote: if test "gawk" = "gettext-tools"; then \
remote: /bin/mkdir -p /app/share/gettext/po; \
remote: for file in Makefile.in.in remove-potcdate.sin quot.sed boldquo
t.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot Makevars.
template; do \
remote: .././install-sh -c -m 644 ./$file \
remote: /app/share/gettext/po/$file; \
remote: done; \
remote: for file in Makevars; do \
remote: rm -f /app/share/gettext/po/$file; \
remote: done; \
remote: else \
remote: : ; \
remote: fi
remote: make[1]: Leaving directory '/app/.vendor/gawk/po'
remote: Making install in test
remote: make[1]: Entering directory '/app/.vendor/gawk/test'
remote: make[2]: Entering directory '/app/.vendor/gawk/test'
remote: make[2]: Nothing to be done for 'install-exec-am'.
remote: make[2]: Nothing to be done for 'install-data-am'.
remote: make[2]: Leaving directory '/app/.vendor/gawk/test'
remote: make[1]: Leaving directory '/app/.vendor/gawk/test'
remote: -----> Fetching txt2man
remote: ! Push rejected, failed to compile Python + FreeTDS + pymssql app.
remote:
remote: ! Push failed
remote: Verifying deploy...
remote:
remote: ! Push rejected to enigmatic-savannah-26714.
remote:
Warning: Your console font probably doesn't support Unicode. If you experience s
trange characters in the output, consider switching to a TrueType font such as C
onsolas!
To https://git.heroku.com/enigmatic-savannah-26714.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/enigmatic-savannah-26
714.git'
C:\Users\Administrator\Heroku_Dep>
非常感谢任何有关解决此问题的帮助。提前谢谢!