Kurallar
py_binary
Kural kaynağını görüntülepy_binary(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, exec_compatible_with, exec_properties, features, imports, legacy_create_init, licenses, main, output_licenses, python_version, restricted_to, srcs_version, stamp, tags, target_compatible_with, testonly, toolchains, visibility)
py_binary
, aşağıdakilerden oluşan yürütülebilir bir Python programıdır:
.py
kaynak dosyadan oluşan bir koleksiyonun (muhtemelen ait olduğu)
diğer py_library
kuralına) bir *.runfiles
için gerekli tüm kodu ve verileri içeren dizin ağacı
ve programı önceki Sprint’te başlatan bir saplama
ve verilerin doğru şekilde hazırlanmasını sağlar.
Örnekler
py_binary( name = "foo", srcs = ["foo.py"], data = [":transform"], # a cc_binary which we invoke at run time deps = [ ":foolib", # a py_library ], )
Başka bir ikili program içinden py_binary
çalıştırmak isterseniz veya
test edin (örneğin, bir Python ikili dosyası çalıştırarak
kullanırsanız) doğru yaklaşım, diğer ikili programı veya
testi, veri bölümündeki py_binary
temel alınarak yapılır. Diğer
ikili program, kaynağa göre py_binary
değerini bulabilir
dizin.
py_binary( name = "test_main", srcs = ["test_main.py"], deps = [":testing"], ) java_library( name = "testing", srcs = glob(["*.java"]), data = [":test_main"] )
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Ad; zorunlu Bu hedef için benzersiz bir ad. main belirtilmediyse ad ile aynı olmalıdır
uygulamanın ana giriş noktası olan kaynak dosyayı
çıkarmanız gerekir. Örneğin, giriş noktanız
main.py , adınız main olmalıdır.
|
deps
|
Etiket listesi; varsayılan değer deps ile ilgili genel yorumları şu adreste bulabilirsiniz:
Çoğu derleme kuralı tarafından tanımlanan tipik özellikler.
Bunlar genellikle
py_library kuralları.
|
srcs
|
Etiket listesi; zorunlu Hedefi oluşturmak için işlenen kaynak (.py ) dosyalarının listesi.
Bu, tüm check-in kodunuzu ve oluşturulan kaynak dosyalarınızı içerir. Kitaplık hedefleri
deps öğesine ait olurken çalışma zamanında gereken diğer ikili program dosyaları
data .
|
imports
|
Dize listesi; varsayılan değer PYTHONPATH bölümüne eklenecek içe aktarma dizinlerinin listesi.
"Değişken yap" değişikliğine tabidir. Bu içe aktarma
bu kural ve ona bağlı tüm kurallar için dizinler eklenir (not:
bu kuralın bağlı olduğu kurallardır. Her dizin
Mutlak yollar ( |
legacy_create_init
|
Tam sayı; varsayılan değer --incompatible_default_to_explicit_init_py kullanılıyor. Yanlış ise kullanıcı
__init__.py dosyalarını oluşturmaktan ve bunları
Gerektiğinde srcs Python hedefi.
|
main
|
Etiket; varsayılan değer srcs listesinde de listelenmelidir. Belirtilmemişse
Bunun yerine name kullanılır (yukarıya bakın). name şunu yapmazsa:
srcs içindeki herhangi bir dosya adıyla eşleşirse, main belirtilmelidir.
|
python_version
|
String; nonconfig; varsayılan değer deps ) Python 2 veya Python için oluşturulup oluşturulmayacağı
3. Geçerli değerler "PY2" ve "PY3" 'dır (varsayılan).
Python sürümü her zaman varsayılan olarak sıfırlanır. tarafından belirtilen sürüm dikkate alınmaksızın, bu özellik tarafından belirtilen sürümden bağımsız olarak farklı daha yüksek hedefler belirlemenize yardımcı olur. Mevcut Python sürümünde Hata uyarısı: Bu özellik, Bazel'in hedefinizi oluşturduğu sürümü belirler.
ancak #4815 nedeniyle,
sonuçta ortaya çıkan saplama komut dosyası, çalışma zamanında yine de yanlış çevirmen sürümünü çağırabilir. Görüntüleyin
bu
geçici çözüm, bu yöntemde |
srcs_version
|
String; varsayılan değer srcs değerinin Python ile uyumlu olduğunu bildirir
2, Python 3 veya her ikisi de olabilir. Python çalışma zamanı sürümünü ayarlamak için
Birpython_version
yürütülebilir Python kuralı (py_binary veya py_test ).
İzin verilen değerler: Gerçekte yalnızca yürütülebilir kuralların ( Hangi bağımlılıkların sürüm gereksinimini sunduğu hakkında teşhis bilgisi almak için
hedefinizde bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfoBu işlem, bilgi sağlayan -pyversioninfo.txt son ekine sahip bir dosya oluşturur
hedefiniz için neden bir Python sürümü veya başka bir sürüm gerektiği hakkında. Bu yöntem şu anda
belirtilen hedef, sürüm çakışması nedeniyle oluşturulamadı.
|
stamp
|
Tam sayı; varsayılan değer
Bağımlılıkları değişmediği sürece damgalı ikili programlar yeniden oluşturulmaz. |
py_library
Kural kaynağını görüntülepy_library(name, deps, srcs, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, imports, licenses, restricted_to, srcs_version, tags, target_compatible_with, testonly, visibility)
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Ad; zorunlu Bu hedef için benzersiz bir ad. |
deps
|
Etiket listesi; varsayılan değer deps ile ilgili genel yorumları şu adreste bulabilirsiniz:
Çoğu derleme kuralı tarafından tanımlanan tipik özellikler.
Bunlar genellikle
py_library kuralları.
|
srcs
|
Etiket listesi; varsayılan değer .py ) dosyalarının listesi.
Bu, tüm check-in kodunuzu ve oluşturulan kaynak dosyalarınızı içerir.
|
imports
|
Dize listesi; varsayılan değer PYTHONPATH bölümüne eklenecek içe aktarma dizinlerinin listesi.
"Değişken yap" değişikliğine tabidir. Bu içe aktarma
bu kural ve ona bağlı tüm kurallar için dizinler eklenir (not:
bu kuralın bağlı olduğu kurallardır. Her dizin
Mutlak yollar ( |
srcs_version
|
String; varsayılan değer srcs değerinin Python ile uyumlu olduğunu bildirir
2, Python 3 veya her ikisi de olabilir. Python çalışma zamanı sürümünü ayarlamak için
Birpython_version
yürütülebilir Python kuralı (py_binary veya py_test ).
İzin verilen değerler: Gerçekte yalnızca yürütülebilir kuralların ( Hangi bağımlılıkların sürüm gereksinimini sunduğu hakkında teşhis bilgisi almak için
hedefinizde bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfoBu işlem, bilgi sağlayan -pyversioninfo.txt son ekine sahip bir dosya oluşturur
hedefiniz için neden bir Python sürümü veya başka bir sürüm gerektiği hakkında. Bu yöntem şu anda
belirtilen hedef, sürüm çakışması nedeniyle oluşturulamadı.
|
py_test
Kural kaynağını görüntülepy_test(name, deps, srcs, data, args, compatible_with, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, imports, legacy_create_init, licenses, local, main, python_version, restricted_to, shard_count, size, srcs_version, stamp, tags, target_compatible_with, testonly, timeout, toolchains, visibility)
py_test()
kuralı bir test derler. Test, bir ikili sarmalayıcıdır
test kodlarına ayırıyorum.
Örnekler
py_test( name = "runtest_test", srcs = ["runtest_test.py"], deps = [ "//path/to/a/py/library", ], )
Bir ana modül de belirtebilirsiniz:
py_test( name = "runtest_test", srcs = [ "runtest_main.py", "runtest_lib.py", ], main = "runtest_main.py", )
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Ad; zorunlu Bu hedef için benzersiz bir ad. |
deps
|
Etiket listesi; varsayılan değer deps ile ilgili genel yorumları şu adreste bulabilirsiniz:
Çoğu derleme kuralı tarafından tanımlanan tipik özellikler.
Bunlar genellikle
py_library kuralları.
|
srcs
|
Etiket listesi; zorunlu Hedefi oluşturmak için işlenen kaynak (.py ) dosyalarının listesi.
Bu, tüm check-in kodunuzu ve oluşturulan kaynak dosyalarınızı içerir. Kitaplık hedefleri
deps öğesine ait olurken çalışma zamanında gereken diğer ikili program dosyaları
data .
|
imports
|
Dize listesi; varsayılan değer PYTHONPATH bölümüne eklenecek içe aktarma dizinlerinin listesi.
"Değişken yap" değişikliğine tabidir. Bu içe aktarma
bu kural ve ona bağlı tüm kurallar için dizinler eklenir (not:
bu kuralın bağlı olduğu kurallardır. Her dizin
Mutlak yollar ( |
legacy_create_init
|
Tam sayı; varsayılan değer --incompatible_default_to_explicit_init_py kullanılıyor. Yanlış ise kullanıcı
__init__.py dosyalarını oluşturmaktan ve bunları
Gerektiğinde srcs Python hedefi.
|
main
|
Etiket; varsayılan değer srcs listesinde de listelenmelidir. Belirtilmemişse
Bunun yerine name kullanılır (yukarıya bakın). name şunu yapmazsa:
srcs içindeki herhangi bir dosya adıyla eşleşirse, main belirtilmelidir.
|
python_version
|
String; nonconfig; varsayılan değer deps ) Python 2 veya Python için oluşturulup oluşturulmayacağı
3. Geçerli değerler "PY2" ve "PY3" 'dır (varsayılan).
Python sürümü her zaman varsayılan olarak sıfırlanır. tarafından belirtilen sürüm dikkate alınmaksızın, bu özellik tarafından belirtilen sürümden bağımsız olarak farklı daha yüksek hedefler belirlemenize yardımcı olur. Mevcut Python sürümünde Hata uyarısı: Bu özellik, Bazel'in hedefinizi oluşturduğu sürümü belirler.
ancak #4815 nedeniyle,
sonuçta ortaya çıkan saplama komut dosyası, çalışma zamanında yine de yanlış çevirmen sürümünü çağırabilir. Görüntüleyin
bu
geçici çözüm, bu yöntemde |
srcs_version
|
String; varsayılan değer srcs değerinin Python ile uyumlu olduğunu bildirir
2, Python 3 veya her ikisi de olabilir. Python çalışma zamanı sürümünü ayarlamak için
Birpython_version
yürütülebilir Python kuralı (py_binary veya py_test ).
İzin verilen değerler: Gerçekte yalnızca yürütülebilir kuralların ( Hangi bağımlılıkların sürüm gereksinimini sunduğu hakkında teşhis bilgisi almak için
hedefinizde bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfoBu işlem, bilgi sağlayan -pyversioninfo.txt son ekine sahip bir dosya oluşturur
hedefiniz için neden bir Python sürümü veya başka bir sürüm gerektiği hakkında. Bu yöntem şu anda
belirtilen hedef, sürüm çakışması nedeniyle oluşturulamadı.
|
stamp
|
Tam sayı; varsayılan değer |
py_runtime
Kural kaynağını görüntülepy_runtime(name, bootstrap_template, compatible_with, coverage_tool, deprecation, distribs, features, files, interpreter, interpreter_path, licenses, python_version, restricted_to, stub_shebang, tags, target_compatible_with, testonly, visibility)
Python kodunu yürütmek için kullanılan bir Python çalışma zamanını temsil eder.
py_runtime
hedefi, bir platform çalışma zamanını veya
derleme çalışma zamanı. Platform çalışma zamanı, bilinen bir cihazda sistem tarafından yüklenmiş çevirmene erişir ve
yoluna işaret ederken, derleme içi çalışma zamanı, yorumlayıcı olarak görev yapan yürütülebilir bir hedefe işaret eder. İçinde
“Yorumcu” veya aşağıdakileri içeren yürütülebilir herhangi bir ikili program veya sarmalayıcı komut dosyası anlamına gelir:
standart ile aynı kuralları izleyerek komut satırında geçirilen bir Python komut dosyasını çalıştırmak
CPython çevirmeni.
Platform çalışma zamanı doğası gereği hermetik değildir. Hedef platformda bir koşul gerektiriyor. size bir tercüman bulmanız gerekir. Derleme içi çalışma zamanı hermetik olabilir ya da olmayabilir, giriş yapılmış bir çevirmeni mi yoksa web sitesine erişen bir sarmalayıcı komut dosyasına mı size yardımcı olabilir.
Örnek:
py_runtime( name = "python-2.7.12", files = glob(["python-2.7.12/**"]), interpreter = "python-2.7.12/bin/python", ) py_runtime( name = "python-3.6.0", interpreter_path = "/opt/pyenv/versions/3.6.0/bin/python", )
Bağımsız değişkenler
Özellikler | |
---|---|
name |
Ad; zorunlu Bu hedef için benzersiz bir ad. |
bootstrap_template
|
Etiket; varsayılan değer |
coverage_tool
|
Etiket; varsayılan değer py_binary ürününden kod kapsamı bilgilerini toplamak için kullanılacak bir hedeftir
ve py_test hedef.
Ayarlanırsa hedef, tek bir dosya oluşturmalı ya da yürütülebilir bir hedef olmalıdır. Tek dosyanın yolu veya hedef yürütülebilirse yürütülebilir dosyanın yolu python kapsam aracının giriş noktasını belirler. Hedef ve çalıştırma dosyaları, kapsam etkinleştirildiğinde çalıştırma dosyalarına eklenir. Aracın giriş noktası, bir python yorumcusu (ör.
|
files
|
Etiket listesi; varsayılan değer |
interpreter
|
Etiket; varsayılan değer |
interpreter_path
|
String; varsayılan değer |
python_version
|
String; varsayılan değer "PY2"
ve "PY3" .
Varsayılan değer, |
stub_shebang
|
String; varsayılan değer py_binary hedefleri yürütülürken kullanılır.
Bilgi için 8685 numaralı sorunu inceleyin çok önemli. Windows için geçerli değildir. |