将SQL Server连接部署到Heroku错误的散景服务器应用程序

时间:2018-06-14 22:43:29

标签: python heroku bokeh pymssql

我过去两天一直试图将我的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>

非常感谢任何有关解决此问题的帮助。提前谢谢!

0 个答案:

没有答案