2016-04-05 43 views
2

'dan Swagger sunucusu (Python Flask) üretilirken hata oluştu Swagger özellikli dosyamı el ile oluşturmak ve bir Python Flask sunucusunun dosyalarını oluşturmak için Swagger Düzenleyicisi'ni kullandım. README sonra connexion kurdu, ancak ben python app.py çalıştırdığınızda hata alıyorum: ValueError: açmak için 1'den fazla değere gerek. Herhangi bir fikir? AşağıdaSwagger editörü Swagger editörü

Tam yığın takibi:

No handlers could be found for logger "connexion.api" 
Traceback (most recent call last): 
    File "app.py", line 5, in <module> 
    app.add_api('swagger.yaml') 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/connexion/app.py", line 144, in add_api 
    debug=self.debug) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/connexion/api.py", line 127, in __init__ 
    self.add_paths() 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/connexion/api.py", line 198, in add_paths 
    six.reraise(*sys.exc_info()) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/connexion/api.py", line 187, in add_paths 
    self.add_operation(method, path, endpoint, path_parameters) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/connexion/api.py", line 160, in add_operation 
    resolver=self.resolver) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/connexion/operation.py", line 168, in __init__ 
    resolution = resolver.resolve(self) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/connexion/resolver.py", line 50, in resolve 
    return Resolution(self.resolve_function_from_operation_id(operation_id), operation_id) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/connexion/resolver.py", line 71, in resolve_function_from_operation_id 
    return self.function_resolver(operation_id) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/connexion/utils.py", line 106, in get_function_from_name 
    module_name, attr_path1 = module_name.rsplit('.', 1) 
ValueError: need more than 1 value to unpack 
+1

Lütfen izleme için https://github.com/swagger-api/swagger-codegen/issues adresinden bir bilet açın. –

cevap

4

Bunu da ben karşılaştım. Gördüğümden, Swagger'ın oluşturduğu kod, Python 3'ü kullandığınızı varsayıyor gibi görünüyor. Connexion, hem Python 2.7 & 3.4+'yi desteklerken, oluşturulan python-flask-server/ temel dizininde ve controllers/ alt dizininin içindedosyasının olması gerekir Python 2.7 için çalışma (Python 3.3'te örtülü Ad Alanı Paketleri tanıtıldı). Kodu oluşturduktan sonra bu 2 boş dosya oluşturursanız, işler çalışmalıdır. Swagger jeneratörü Python 2.7'yi desteklemeyi istiyorsa (connexion buna izin verdiği için), bu dosyaları da sağlamalıdır.

+0

Bu sorunu çözdü, ancak diğer sorunlara koştu: def bazı_fonksiyon (p1, p2) -> str: default_controller.py dosyasında geçersiz sözdizimi. @letsgoblue Bunu Python 2.7 ile çalıştınız mı? – tw1742

+1

@ tw1742: Ah evet, Python 3.5 + 'da iyi-tip ipuçlarının yeni olduğunu, böylece Python 2.7 uyumlu olmasını sağlamanız için, bu dosyadaki '-> str' ve benzeri bölümleri kaldırmanız gerektiğini ve her şeyin . – letsgoblue

+0

Tamam, uygulama şimdi çalışıyor, ancak hiçbir içerik görüntülenmiyor ve bir 404 döndürüyor. – tw1742