Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 10

0
votes
answers
38 views
+10

燒瓶:如何在一定的時間內保留一個變量的值?

0

我在Messenger平臺上製作了一個聊天機器人,並詢問用戶一系列的問題。但是,當用戶回答第一個問題時,它直接回到Api.AI中的回退意圖,我必須保持回答同樣的問題直到下一個問題。 我認爲設置一個sessionID將解決這個問題,但它沒有。燒瓶:如何在一定的時間內保留一個變量的值?

ai = ApiAI(os.environ["APIAI_TOKEN"]) 
req = ai.text_request() 
    req.session_id = str(uuid.uuid1(int(str(senderID)[0:15]))) 

事實證明的UUID1的輸出變化時,有時當一個新的請求(當用戶回答了這個問題),即使senderID是相同的(senderID是通過Facebook的發送的用戶ID)。所以,我試圖將uuid1的值保存到字典中,如果用戶回答第一個問題,新請求將首先檢查字典中的senderID,如果它已存在,則不會爲同一個senderID生成新的uuid。 但問題是有時當一個新的請求(來自同一用戶)遇到heroku時,字典中的值消失了。這不會每次都發生,但約90%的時間。 以下是新請求的日誌。

2017-11-18T09:43:03.784670+00:00 heroku[router]: at=info method=POST path="/" host=website.com request_id=ab6d6488-0343-4c68-9b2a-d6faf2ee2302 fwd="173.252.123.140" dyno=web.1 connect=0ms service=633ms status=200 bytes=161 protocol=https 

我該如何保留價值。還有其他方法嗎? 我是一個新手,我一直陷在這個問題一個星期。

沙发
0
0

字典可能沒有綁定到會話,可能會超出範圍並從內存中清除。所以你存儲的任何東西都不會被可靠地持久化。有兩種方法可以解決這個問題。首先是使用像Redis這樣的獨立緩存服務器來存儲你的值,其次是在Flask本身中使用緩存工具。

如果你打算使用外部Redis的服務器,你可以不喜歡下面

import redis 

# instantiate the redis db 
REDIS_HOST = <REDIS_HOST> 
REDIS_PORT = <REDIS_PORT> 
redis_db = redis.StrictRedis(host=REDIS_HOST,port=REDIS_PORT) 

key = sender_id 
event = {} 
event["uuid"] = uuid1 
event["sender_id"] = sender_id 
redis_db.delete(key) #remove old keys 
redis_db.hmset(key, event) 
redis_db.expire(key, 259200) #3 days (you can set your own expire time in seconds 

代碼可以檢查高速緩存,看看是否存在某個值使用

key = sender_id 
if redis_db.exists(key): 
    event = redis_db.hgetall(key) 

第二方式是使用燒瓶的緩存工具與SimpleCache或LRUCache。下面是緩存值,以後可以用

key = sender_id 
event = cache.get(key) 

但是你需要記住retrived使用SimpleCache

from werkzeug.contrib.cache import SimpleCache 
cache = SimpleCache() 

key = sender_id 
event = {} 
event["uuid"] = uuid1 
event["sender_id"] = sender_id 

cache.set(key,event,timeout=259200) # 3 days 

的例子,如果你用使用的高速緩存工具的第二選擇相同的服務器,然後每次您的服務器重新啓動時,您將丟失值,但它們應該在整個會話期間都可用。

+0

當服務器重新啓動時我不會失去redis的值嗎? –

+0

如果你把它安裝在同一臺機器上,是的。但是大多數我認識的人,至少有一些新開發人員使用某種雲服務來進行redis(azure,aws等),因爲它運行在不同的服務器上,所以他們不會重置。 此外,如果答案幫助你,請接受它 – Akshay

0
votes
answers
72 views
+10

獲取下一行peewee

0

我創建一個使用瓶和peewee獲取下一行peewee

這是樣本查詢來獲取當前後使用url

total_data = wired_model.EN.select().order_by(wired_model.EN.id.desc()) 
post = total_data.where(wired_model.EN.url == url).get() 

我使用total_data拿到最近的職位,現在我博客要顯示一個鏈接到下一篇文章和以前的帖子在目前的崗位,有一個簡單的方法來做到這在peewee像next_row()

沙发
0
1

使用「偏移」:

.limit(1).offset(1) 
0
votes
answers
88 views
+10

flask - sqlalchemy - 自引用查詢

0

我嘗試在sqlalchemy中進行查詢以獲取在父級和子級上過濾的自引用關係。flask - sqlalchemy - 自引用查詢

category_country = Table('category_country', Base.metadata, 
    Column('category_id', Integer, ForeignKey('category.id'), primary_key=True), 
    Column('country_id', Integer, ForeignKey('country.id'), primary_key=True) 
) 

class Category(Base): 
    __tablename__ = "category" 
    id = Column(Integer, primary_key=True, autoincrement=True) 
    parent_id = Column(Integer, ForeignKey('category.id')) 
    subcategories = relationship("Category", backref=backref('parent', remote_side=id)) 
    countries = relationship(Country, secondary = category_country, backref='categories') 

class Country(Base): 
    __tablename__ = "country" 
    id = Column(Integer, primary_key=True) 

查詢

category = s.query(Category).join(Category.countries).options(contains_eager(Category.countries)).filter(Country.id == 1).filter(Category.id == category_id).join(Category.countries, aliased=True).join(Category.subcategories, aliased=True).options(contains_eager(Category.countries)).filter(Country.id == 1).first() 

,但它不工作。我需要找到孩子這是從國家1和其父是CATEGORY_ID和國家也是1

沙发
0
0

我沒有完全得到我的第一次讀你的模型/代碼,但我會解決這個的辦法是通過拆分自我指涉加入到子查詢()語句這樣的:

filter_by_country = (db.session.query(...) 
        .filter(...) 
        .subquery()) 

final_results = (db.session.query(...) 
       .join(filter_by_country, 
         db.and_(Category.id == filter_by_country.c.id, ..., ...)) 
       .options(...) 
       .filter(...) 
       .etc(...).first()) 

我發現這種模式可以幫助簡化這些類型的查詢。希望這可以幫助。

0
votes
answers
68 views
+10

打印查看BigQuery的查詢結果

0

我有一個函數內部的BigQuery查詢,如下所示:打印查看BigQuery的查詢結果

def get_data_from_bigquery(): 
    """query bigquery to get data to import to PSQL""" 
    app_id = get_app_id() 
    bq = bigquery.Client(project=app_id) 
    query = """SELECT * FROM `Backup.Prod_UserUserMetadata`""" 
    query_job = bq.query(query) 
    data = query_job.result() 
    rows = list(data) 
    print(rows) 
    return rows 

我有我的路線如下:

@app.route('/azure-import-data') 
def print_data(): 
    return 'This is the data:
 
' 

功能get_data_from_bigquery()被稱爲在我的下面的類內get()功能:

class AzureImportProcess(Resource): 
    def get(self): 
     get_data_from_bigquery() 
... 
api.add_resource(AzureImportProcess, '/azure-import-data') 

print(rows)函數似乎不起作用,因爲它沒有被打印在雲控制檯或瀏覽器中。有沒有其他方法可以打印數據以查看它的格式?

+0

它看起來不像你在路由功能中調用函數'get_data_from_bigquery'。你想要做什麼? – Abdou

+0

發佈更新@Abdou – codeninja

+0

請參閱我的回答。 – Abdou

沙发
0
1

首先,您不需要get_data_from_bigquery函數中的print聲明。其次,get函數需要有一個return聲明才能顯示。

編輯函數定義如下:

def get_data_from_bigquery(): 
    """query bigquery to get data to import to PSQL""" 
    app_id = get_app_id() 
    bq = bigquery.Client(project=app_id) 
    query = """SELECT * FROM `Backup.Prod_UserUserMetadata`""" 
    query_job = bq.query(query) 
    data = query_job.result() 
    rows = list(data) 
    return rows 

編輯Resource類的定義如下:

class AzureImportProcess(Resource): 
    def get(self): 
     bq_data = get_data_from_bigquery() 
     return 'This is the data:
 
{}'.format(bq_data) 

現在,您可以將您的資源添加到API對象:

api.add_resource(AzureImportProcess, '/azure-import-data') 

您不需要定義print_data函數,除非你正在處理更復雜的API。

我希望這會有所幫助。

+0

它可能試圖打印數據(總共52k行),但它會引發以下異常:'在維護0請求總數後超過128 MB,268 MB,超過268 MB「 – codeninja

+0

這既不是'Flask'也不是'flask_restful'錯誤。它與'App Engine'有關。減少類似''「」SELECT * FROM Backup.Prod_UserUserMetadata LIMIT 100「」「'的查詢,以確保答案真正起作用。一旦你確定它可以工作,那麼你可以找出如何處理你的記憶問題。 – Abdou

0
votes
answers
49 views
+10

瓶頸URL路由在所有頁面上失敗,但索引(/)

0

我正在使用Flask和Blueprints製作複雜的應用程序。當我運行它並使用「/」路徑請求模塊索引功能時,它工作得很好。但是,只要我添加另一個頁面/函數(例如/下面的示例中的驗證程序/ dhashboard或任何其他),它就會將此鏈接路由到404.瓶頸URL路由在所有頁面上失敗,但索引(/)

這是我的「backoffice」模塊之一的代碼所謂的 「驗證器」:

from flask import Blueprint, render_template 

from backoffice import login_required 
from backoffice import app 


# Define Blueprint 

mod_verificator = Blueprint("verificator", __name__, url_prefix='/verificator/', template_folder="templates") 


@mod_verificator.route('/', methods=['GET', 'POST']) 
@login_required 
def verificator(): 
    return render_template("verificator.html") 


@mod_verificator.route('/dashboard/', methods=['GET', 'POST']) 
def dashboard(): 
    return render_template("dashboard.html") 


# Register blueprint(s) 
app.register_blueprint(mod_verificator) 

和日誌輸出:

2017-11-25 22:55:14,614 : DEBUG : verificator: 12: <module> : _ name _: backoffice.mod_verificator.verificator 
2017-11-25 22:55:14,614 : DEBUG : verificator: 13: <module> : mod_name : verificator 

2017-11-25 22:57:17,459 : INFO : _internal: 87: _log : 127.0.0.1 - - [25/Nov/2017 22:57:17] "GET /verificator/ HTTP/1.1" 200 - 
2017-11-25 22:57:40,902 : INFO : _internal: 87: _log : 127.0.0.1 - - [25/Nov/2017 22:57:40] "GET /verificator/dashboard/ HTTP/1.1" 404 - 

如此, 「驗證器」 模塊渲染模板(200和HTTP代碼)和驗證器/儀表板失敗慘與404

我完全失去了,並尋求你的幫助!

+1

奇怪...也許溝結尾的斜線:'url_prefix =「/驗證器」 '在Blueprint實例化中(我總是這樣定義它們) – abigperson

沙发
0
2

根據您url_prefix設置,可以設置尾部的斜槓爲/verificator/,如果你想獲得儀表盤,你需要的網址,您的瀏覽器:

http://127.0.0.1:5000/verificator//dashboard/

不過,你最好刪除結尾的斜線是/verificator,這樣就可以通過訪問:

http://127.0.0.1:5000/verificator/dashboard/

+0

確實有效。很簡單!非常感謝! – uzla

0
votes
answers
92 views
+10

如何設置SQLAlchemy中兩個表之間的關係?

0

我有兩個表:如何設置SQLAlchemy中兩個表之間的關係?

  1. 公告
  2. AnnouncementsSchedule

關係是關鍵one(Announcements)many(AnnouncementsSchedule)

Announcements.id = AnnouncementsSchedule.announcements_id 

我試圖描述SQLAlchemy的機型:

第一個表被描述爲模型:

class Announcements(db.Model): 
    __tablename__ = 'announcements' 
    id = db.Column(db.Integer, primary_key=True) 
    name = db.Column(db.String(150), nullable=False) 
    text = db.Column(db.Text(), nullable=False) 
    category = db.Column(db.Integer(), nullable=False) 
    subcategory = db.Column(db.Integer(), nullable=False) 
    offer_type = db.Column(db.Integer(), nullable=False) 
    url = db.Column(db.String(150), nullable=True) 
    status = db.Column(db.Integer(), nullable=False) 
    #children = relationship("AnnouncementsSchedule", back_populates="announcements") 

二是:

class AnnouncementsSchedule(db.Model): 
    __tablename__ = 'announcements_schedule' 
    id = Column(Integer, primary_key=True) 
    week_day = db.Column(db.Integer(), nullable=True) 
    week_all = db.Column(db.Integer(), nullable=False) 
    time = db.Column(db.Time(), nullable=False) 
    announcement_id = Column(Integer, ForeignKey('announcements.announcements_id')) 

我做什麼了?

+0

你有沒有一個得到錯誤?你有什麼問題? –

沙发
0
0

你有列名錯誤(公告沒有announcement_id):

# announcement_id = Column(Integer, ForeignKey('announcements.announcements_id')) 
# change to -> 
announcement_id = Column(Integer, ForeignKey('announcements.id')) 
+0

謝謝,那麼如何從相關表中獲取數據? – Jessie

+0

announcement = relationship(「Announcements」,back_populates =「schedule」) - 在第一個模型上,put - > schedules = relationship(「AnnouncementsSchedule」,back_populates =「announcement」) –

0
votes
answers
49 views
+10

Python瓶沒有返回cookie/ValueError:查看功能沒有返回響應

0

我仍在努力將Python中的字符串傳遞給另一個函數。Python瓶沒有返回cookie/ValueError:查看功能沒有返回響應

我試圖按照這裏給出的例子:https://www.tutorialspoint.com/flask/flask_cookies.htm

我已經試過落實到我的代碼,這但現在我得到以下回溯:

Traceback (most recent call last): 
    File "/Users/marcel/tensorflow/lib/python3.6/site-packages/flask/app.py", line 1982, in wsgi_app 
    response = self.full_dispatch_request() 
    File "/Users/marcel/tensorflow/lib/python3.6/site-packages/flask/app.py", line 1615, in full_dispatch_request 
    return self.finalize_request(rv) 
    File "/Users/marcel/tensorflow/lib/python3.6/site-packages/flask/app.py", line 1630, in finalize_request 
    response = self.make_response(rv) 
    File "/Users/marcel/tensorflow/lib/python3.6/site-packages/flask/app.py", line 1725, in make_response 
    raise ValueError('View function did not return a response') 
ValueError: View function did not return a response 

這將意味着我我沒有返回任何東西,但我真的不知道我要去哪裏錯了,我不得不承認我很迷茫。

我完整的代碼看起來是這樣的:

from __future__ import print_function 
import tensorflow as tf 
import argparse 
import os 
from six.moves import cPickle 
from model import Model 
from six import text_type 
import flask 
from flask import jsonify, render_template, request, make_response 

app = flask.Flask(__name__) 


@app.route('/') 
def index(): 
    return render_template('index.html') 

@app.route('/test') 
def tester(): 
    return "This is a test" 

@app.route('/', methods = ['POST', 'GET']) 
def main(): 
    if request.method == 'POST': 
     parser = argparse.ArgumentParser(
          formatter_class=argparse.ArgumentDefaultsHelpFormatter) 
     parser.add_argument('--save_dir', type=str, default='save', 
          help='model directory to store checkpointed models') 
     parser.add_argument('-n', type=int, default=500, 
          help='number of characters to sample') 
     parser.add_argument('--prime', type=text_type, default=u' ', 
          help='prime text') 
     parser.add_argument('--sample', type=int, default=1, 
          help='0 to use max at each timestep, 1 to sample at ' 
           'each timestep, 2 to sample on spaces') 

     args = parser.parse_args() 

     resp = make_response(render_template('sample.html')) 
     resp.set_cookie('args', args) 

     return resp 


@app.route('/sampler', methods = ['POST', 'GET']) 
def sample(): 
    args = request.cookies.get('args') 
    with open(os.path.join(args.save_dir, 'config.pkl'), 'rb') as f: 
     saved_args = cPickle.load(f) 
    with open(os.path.join(args.save_dir, 'chars_vocab.pkl'), 'rb') as f: 
     chars, vocab = cPickle.load(f) 
    model = Model(saved_args, training=False) 
    with tf.Session() as sess: 
     tf.global_variables_initializer().run() 
     saver = tf.train.Saver(tf.global_variables()) 
     ckpt = tf.train.get_checkpoint_state(args.save_dir) 
     if ckpt and ckpt.model_checkpoint_path: 
      saver.restore(sess, ckpt.model_checkpoint_path) 
      if request.method == 'POST': 
       text = model.sample(sess, chars, vocab, args.n, args.prime, 
            args.sample).encode('utf-8') 
       resp = make_response(render_template('text.html')) 
       resp.set_cookie('verse', text) 
       return resp 


@app.route('/text') 
def printer():  
    verse = request.cookies.get('verse') 
    return verse 


@app.errorhandler(404) 
def page_not_found(error): 
    return render_template('404.html'), 404 

if __name__ == '__main__': 
    main() 

之前,我曾試圖剛剛從我的樣本功能打印機功能發送Cookie,但它返回相同的錯誤。

我的代碼之前:

def sample(args): 
    with open(os.path.join(args.save_dir, 'config.pkl'), 'rb') as f: 
     saved_args = cPickle.load(f) 
    with open(os.path.join(args.save_dir, 'chars_vocab.pkl'), 'rb') as f: 
     chars, vocab = cPickle.load(f) 
    model = Model(saved_args, training=False) 
    with tf.Session() as sess: 
     tf.global_variables_initializer().run() 
     saver = tf.train.Saver(tf.global_variables()) 
     ckpt = tf.train.get_checkpoint_state(args.save_dir) 
     if ckpt and ckpt.model_checkpoint_path: 
      saver.restore(sess, ckpt.model_checkpoint_path) 
      text = model.sample(sess, chars, vocab, args.n, args.prime, 
           args.sample).encode('utf-8') 
      resp = make_response(render_template('text.html')) 
      resp.set_cookie('verse', text) 
      return resp 


@app.route('/text') 
def printer():  
    verse = request.cookies.get('verse') 
    return verse 
+0

而不僅僅是錯誤消息,請發佈完整的回溯。此外,什麼時候發生這種錯誤 - 什麼端點和你正在做什麼樣的請求?謝謝。 – alecxe

+0

剛編輯完整的Traceback。當我嘗試打開http://127.0.0.1:5000/text時會發生這種情況。我得到一個內部服務器錯誤和上面的回溯。 – Marcel

+0

視圖函數必須在所有情況下返回有效的響應值。您顯示的代碼中的多個視圖都有返回「None」的路徑。 – davidism

沙发
0
0

verse cookie的值不存在的價值verse變量將變爲None。這意味着您的text視圖將返回None,其中Flask不喜歡並理解爲「視圖函數未返回響應」。

您可能需要妥善處理這種情況下 - 例如,簡單地返回一個空字符串會解決這個問題(當然,這只是一個樣本簡單的解決方法來證明的差異):

@app.route('/text') 
def printer():  
    return request.cookies.get('verse', '') 

而且,並非sample()視圖中的所有代碼路徑都會返回有效的響應 - 請確保解決該問題(例如,向sample()視圖發出GET請求會導致相同的「視圖函數未返回響應」錯誤) 。

板凳
0
0

main,你將需要外部的請求參數校驗範圍返回值:

@app.route('/', methods = ['POST', 'GET']) 
def main(): 
    if request.method == 'POST': 
     parser = argparse.ArgumentParser(
     ....#statements follow    
     args = parser.parse_args() 

     resp = make_response(render_template('sample.html')) 
     resp.set_cookie('args', args) 

     return resp 
    return render_template('home.html') #need to return something here 
0
votes
answers
50 views
+10

如何將模板Flask中的對象顯示爲json?

-4

我有一個路由方法:如何將模板Flask中的對象顯示爲json?

@app.route('/add', methods=['GET']) 
def add_view(): 
    return render_template('add.html', categories=api.categories()) 

然後我試圖顯示categories爲JSON內模板add.html

{{ categories | json }} 

它不工作

+0

請提供什麼行不通的詳細信息,準確。錯誤消息,錯誤的行爲描述,一切 –

沙发
0
0

我覺得很難理解到底是什麼你正在尋找在這裏,所以我想看到更多的細節,但這裏是基於我認爲你問一個答案(我將修改這SUI你的需求/如果事情改變,完全刪除這個評論)。

你調用api.categories()並打算使這是JSON你的HTML模板,是嗎?

確定什麼,我建議你在這裏是爲了確保api.categories()正在返回的dict一個實例。例如,您的通話api.categories()返回應該是這樣的:

{ 
    "testKey1": "testValue1", 
    "testKey2": "testValue2" 
} 

現在在你的HTML模板來渲染這是JSON。您可以使用以下進口導入瓶模塊中的json模塊:

import json 

現在,在您add_view方法的return語句將如下:

return render_template('add.html', categories=json.dumps(api.categories())) 

你現在可以做類似如下在你的HTML模板中:

<script> 
    document.write("{{categories}}"); 
<script> 

這應該爲你呈現你的JSON就好了。

0
votes
answers
52 views
+10

燒瓶JSON響應最後一個元素

0

比方說,我有JSON文件如下:燒瓶JSON響應最後一個元素

{ 
    "task": [ 
    { 
     "description": "Milk, Cheese, Pizza, Fruit, Tylenol", 
     "done": False, 
     "id": 1, 
     "title": "Buy groceries" 
    }, 
    { 
     "description": "Need to find a good Python tutorial on the web", 
     "done": False, 
     "id": 2, 
     "title": "Learn Python" 
    } 
    ] 
} 

我想知道如何能夠在JSON響應訪問的最後一個元素。我曾嘗試下面的代碼遞增,但沒有奏效:

id': request.json['task'][-1]['id'] + 1 
+0

你想要的輸出是什麼? – Ajax1234

+0

我想在代碼中自動incerement id。我的意思是,無論前端會在這裏返回,它必須每次增加 – human

+0

'request.json ['task'] [ - 1] ['id'] + = 1'你的意思是? – Arman

沙发
0
1

如果你想同時增加id S,你可以這樣做:

d = { 
    "task": [ 
    { 
     "description": "Milk, Cheese, Pizza, Fruit, Tylenol", 
     "done": False, 
     "id": 1, 
     "title": "Buy groceries" 
    }, 
    { 
    "description": "Need to find a good Python tutorial on the web", 
    "done": False, 
    "id": 2, 
    "title": "Learn Python" 
    } 
] 
} 
new_d = {"task":[{a:b+1 if a == "id" else b for a, b in i.items()} for i in d['task']]} 

輸出:

{'task': [{'id': 2, 'done': False, 'description': 'Milk, Cheese, Pizza, Fruit, Tylenol', 'title': 'Buy groceries'}, {'id': 3, 'done': False, 'description': 'Need to find a good Python tutorial on the web', 'title': 'Learn Python'}]} 

如果您想增加存在於列表中最後一個字典中的id

d['task'][-1]['id'] += 1 
+0

謝謝你的迴應。但問題是實際的文件很大,這只是一個例子。在我的情況下,我有json文件,每個請求都必須增加id – human

0
votes
answers
58 views
+10

蟒蛇*僅在服務器列表語法錯誤,代碼本地客戶機上工作正常

1

當我執行我的外部瓶服務器上我的代碼,我得到以下服務器端錯誤:蟒蛇*僅在服務器列表語法錯誤,代碼本地客戶機上工作正常

2017-12-03 02:40:53 ", line 
2017-12-03 02:40:53 430 
2017-12-03 02:40:53 
2017-12-03 02:40:53  
2017-12-03 02:40:53 combinedheader = ["Protein", "MW", *listheadersSpC, *listheadersNSAF, *listheadersloge] 
2017-12-03 02:40:53  
2017-12-03 02:40:53 
2017-12-03 02:40:53^
2017-12-03 02:40:53 SyntaxError 
2017-12-03 02:40:53 : 
2017-12-03 02:40:53 invalid syntax 
2017-12-03 02:40:53 

這是行導致悲傷的代碼:
combinedheader = ["Protein", "MW", *listheadersSpC, *listheadersNSAF, *listheadersloge]

在本地,代碼運行得很好。還要注意的是,當在服務器上單獨執行下面的代碼返回沒有錯誤:

list1 = ['a'] 
list2 = ['d' , 'e' , 'f'] 
list3 = ["Hi", "there", *list1, *list2] 
print(list3) 

Retuns:[ '您好', '有', '一個', 'd', 'E', 'F']

編輯:代碼運行在使用Python的虛擬環境的Web應用程序上。 webapp和virtualenv python = 3.6。本地客戶端運行相同版本的Python,相同的已安裝模塊。

+0

I認爲你在服務器上使用了錯誤版本的python(可能是2.x),你最好確認服務器python的版本號 – hsfzxjy

+0

謝謝,我在發佈這個問題之前檢查了它服務器:版本3.6。本地版本:版本3.6 – PeptideWitch

+0

但是你可能會想到某些東西,也許我在服務器上設置的虛擬環境沒有正確傳遞我的代碼,只需再次檢查,主服務器使用2.7.6,而我的虛擬環境使用3.6。是吧;會報告回 – PeptideWitch

沙发
0
1

代碼os.system("python myscript.py")不會總是使用您當前的解釋器。相反,它取決於環境變量。所以你必須明確指定解釋器的絕對路徑。

對於大多數情況,您可以使用sys.executable獲取當前的翻譯。然而,它不適用於uwsgi :-(其中sys.executable將返回uwsgi二進制文件的路徑。因此,在這種情況下,您必須將可執行路徑硬編碼到virtualenv解釋器,如下所示:os.system("path/to/venv/python myscript.py")

+0

工作就像一個魅力,感謝指導我通過這個過程 – PeptideWitch