2017-10-27 3 views
0

Ich erhalte "ImportError: Kein Modul namens Anfragen" Fehler beim Versuch, new_http_archive Regel verwenden, um Anfragen zu bekommen.Importieren Python-Anfragen mit Bazel new_http_archive Regel

ARBEITSBEREICH:

new_http_archive(
    name = "requests", 
    urls = ["https://github.com/requests/requests/tarball/master/requests-requests-v2.18.4-90-g81b6341.tar.gz"], 
    build_file_content = """ 
py_library(
    name = "srcs", 
    srcs = glob(["requests/*.py"]), 
    visibility = ["//visibility:public"] 
)""" 
) 

BUILD:

py_library(
    name = "foo", 
    deps = ["@requests//:srcs"], 
    srcs = glob(["foo.py",]), 
) 

py_test(
    name = "foo_test", 
    srcs = glob(["foo_test.py",]), 
    deps = glob([":foo",]), 
) 

Wenn ich 'SRCs = glob ([ "*"])' in der new_http_archive Regel ich alle Arten von Fehlermeldungen erhalten über fehlende .py-Dateien (was Sinn macht - es gibt alle Arten von Dateien im Anforderungsrepository)

Meine Frage ist, wie man den build_file_content so spezifiziert, dass er mir eine Bibliothek funktionierender Anfragen geben würde? (An dieser Stelle bin ich nicht sicher, ob ich rechte URL und richtige Regel für den Build_file_content verwende) Ich möchte nur meinen Python-Code mit Bazel laufen lassen und Bazel verwalten, die Anforderungsbibliothek zur Verfügung stellen.

Antwort

3

Sie sind sehr nah dran. Wir können das Problem sehen, indem Sie in der Anfragen tar.gz suchen:

$ tar -tf requests-requests-v2.18.4-90-g81b6341.tar.gz 
... 
requests-requests-81b6341/requests/adapters.py 
requests-requests-81b6341/requests/api.py 
requests-requests-81b6341/requests/auth.py 
requests-requests-81b6341/requests/certs.py 
requests-requests-81b6341/requests/compat.py 
requests-requests-81b6341/requests/cookies.py 
... 

So alle Dateien sind innerhalb eines Verzeichnisses requests-Anfragen-81b6341 genannt. Da Ihre BUILD-Datei glob(["requests/*.py"]) enthält, entspricht dies nichts. Um dies zu beheben, können Sie das strip_prefix-Attribut der new_http_archive-Regel verwenden:

new_http_archive(
    name = "requests", 
    urls = ["https://github.com/requests/requests/tarball/master/requests-requests-v2.18.4-90-g81b6341.tar.gz"], 
    strip_prefix = "requests-requests-81b6341", 
    build_file_content = """ 
py_library(
    name = "srcs", 
    srcs = glob(["requests/*.py"]), 
    visibility = ["//visibility:public"] 
)""" 
) 
Verwandte Themen