Kurallar
py_binary
Kural kaynağını gösterpy_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
, .py
kaynak dosyası (muhtemelen diğer py_library
kurallarına ait) koleksiyonu, çalışma anında programın ihtiyaç duyduğu tüm kod ve verileri içeren *.runfiles
dizin ağacı ile programı doğru ilk ortam ve verilerle başlatan bir saplama komut dosyasından oluşan yürütülebilir bir Python programıdır.
Ö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 veya test içinden bir py_binary
çalıştırmak istiyorsanız (örneğin, java_test içinden bir model kaynak oluşturmak için bir python ikili programı çalıştırmak) doğru yaklaşım, diğer ikili programı veya testi veri bölümündeki py_binary
öğesine bağımlı hale getirmektir. Böylece diğer ikili program, kaynak dizine göre py_binary
öğesini bulabilir.
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; gerekli Bu hedef için benzersiz bir ad. main belirtilmemişse bu ad, uygulamanın ana giriş noktası olan kaynak dosyanın adından uzantının çıkarılmasıyla aynı olmalıdır. Örneğin, giriş noktanızın adı main.py ise adınız main olmalıdır.
|
deps
|
Etiket listesi; varsayılan deps ile ilgili genel yorumları inceleyebilirsiniz.
Bunlar genellikle
py_library kurallarıdır.
|
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 bunun yerine deps konumuna aittir. Çalışma zamanında gereken diğer ikili program dosyaları ise data konumundadır.
|
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 dizinleri, bu kural ve ona bağlı tüm kurallar için eklenir (not: bu kuralın bağlı olduğu kurallar değildir. Her dizin, bu kurala bağlı olan
Mutlak yollara ( |
legacy_create_init
|
Tam sayı; varsayılan değer --incompatible_default_to_explicit_init_py kullanılmadığı sürece doğru anlamına gelir. False (yanlış) değerine ayarlanırsa __init__.py dosyalarını oluşturmak (büyük olasılıkla boş) ve bunları gereken şekilde Python hedeflerine srcs eklemekten kullanıcı sorumludur.
|
main
|
Etiket; varsayılan değer srcs listesinde de listelenmelidir. Belirtilmemişse bunun yerine name kullanılır (yukarıya bakın). name , srcs içindeki hiçbir dosya adıyla eşleşmezse main belirtilmelidir.
|
python_version
|
Dize; yapılandırılmamış; varsayılan değer deps ) Python 2 veya Python 3 için derlenip oluşturulmayacağı. Geçerli değerler "PY2" ve "PY3" 'dır (varsayılan).
Komut satırında veya bu sürüme bağımlı diğer daha yüksek hedefler tarafından belirtilen sürümden bağımsız olarak, Python sürümü her zaman bu özellik tarafından belirtilen sürüme sıfırlanır (büyük olasılıkla varsayılan olarak). 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ı yine de çalışma zamanında yanlış çevirmen sürümünü çağırabilir. Gerektiğinde Python sürümlerinden birine işaret eden bir |
srcs_version
|
Dize; varsayılan değer srcs öğesinin Python 2, Python 3 veya her ikisiyle uyumlu olduğunu bildirir. Python çalışma zamanı sürümünü gerçekten ayarlamak için yürütülebilir bir Python kuralının python_version özelliğini (py_binary veya py_test ) kullanın.
İzin verilen değerler: Gerçekte yalnızca yürütülebilir kuralların ( Hangi bağımlılıkların sürüm gereksinimlerini karşıladığı hakkında teşhis bilgileri almak için hedefinizde bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfoBu işlem, -pyversioninfo.txt son ekine sahip bir dosya oluşturarak hedefinizin neden bir Python sürümü veya başka bir sürüm gerektirdiği hakkında bilgi verir. Belirtilen hedef, sürüm çakışması nedeniyle derleme başarısız olsa bile çalışır.
|
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österpy_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; gerekli Bu hedef için benzersiz bir ad. |
deps
|
Etiket listesi; varsayılan deps ile ilgili genel yorumları inceleyebilirsiniz.
Bunlar genellikle
py_library kurallarıdır.
|
srcs
|
Etiket listesi; varsayılan .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 dizinleri, bu kural ve ona bağlı tüm kurallar için eklenir (not: bu kuralın bağlı olduğu kurallar değildir. Her dizin, bu kurala bağlı olan
Mutlak yollara ( |
srcs_version
|
Dize; varsayılan değer srcs öğesinin Python 2, Python 3 veya her ikisiyle uyumlu olduğunu bildirir. Python çalışma zamanı sürümünü gerçekten ayarlamak için yürütülebilir bir Python kuralının python_version özelliğini (py_binary veya py_test ) kullanın.
İzin verilen değerler: Gerçekte yalnızca yürütülebilir kuralların ( Hangi bağımlılıkların sürüm gereksinimlerini karşıladığı hakkında teşhis bilgileri almak için hedefinizde bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfoBu işlem, -pyversioninfo.txt son ekine sahip bir dosya oluşturarak hedefinizin neden bir Python sürümü veya başka bir sürüm gerektirdiği hakkında bilgi verir. Belirtilen hedef, sürüm çakışması nedeniyle derleme başarısız olsa bile çalışır.
|
py_test
Kural kaynağını gösterpy_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 test kodunun etrafında kullanılan ikili sarmalayıcıdır.
Ö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; gerekli Bu hedef için benzersiz bir ad. |
deps
|
Etiket listesi; varsayılan deps ile ilgili genel yorumları inceleyebilirsiniz.
Bunlar genellikle
py_library kurallarıdır.
|
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 bunun yerine deps konumuna aittir. Çalışma zamanında gereken diğer ikili program dosyaları ise data konumundadır.
|
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 dizinleri, bu kural ve ona bağlı tüm kurallar için eklenir (not: bu kuralın bağlı olduğu kurallar değildir. Her dizin, bu kurala bağlı olan
Mutlak yollara ( |
legacy_create_init
|
Tam sayı; varsayılan değer --incompatible_default_to_explicit_init_py kullanılmadığı sürece doğru anlamına gelir. False (yanlış) değerine ayarlanırsa __init__.py dosyalarını oluşturmak (büyük olasılıkla boş) ve bunları gereken şekilde Python hedeflerine srcs eklemekten kullanıcı sorumludur.
|
main
|
Etiket; varsayılan değer srcs listesinde de listelenmelidir. Belirtilmemişse bunun yerine name kullanılır (yukarıya bakın). name , srcs içindeki hiçbir dosya adıyla eşleşmezse main belirtilmelidir.
|
python_version
|
Dize; yapılandırılmamış; varsayılan değer deps ) Python 2 veya Python 3 için derlenip oluşturulmayacağı. Geçerli değerler "PY2" ve "PY3" 'dır (varsayılan).
Komut satırında veya bu sürüme bağımlı diğer daha yüksek hedefler tarafından belirtilen sürümden bağımsız olarak, Python sürümü her zaman bu özellik tarafından belirtilen sürüme sıfırlanır (büyük olasılıkla varsayılan olarak). 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ı yine de çalışma zamanında yanlış çevirmen sürümünü çağırabilir. Gerektiğinde Python sürümlerinden birine işaret eden bir |
srcs_version
|
Dize; varsayılan değer srcs öğesinin Python 2, Python 3 veya her ikisiyle uyumlu olduğunu bildirir. Python çalışma zamanı sürümünü gerçekten ayarlamak için yürütülebilir bir Python kuralının python_version özelliğini (py_binary veya py_test ) kullanın.
İzin verilen değerler: Gerçekte yalnızca yürütülebilir kuralların ( Hangi bağımlılıkların sürüm gereksinimlerini karşıladığı hakkında teşhis bilgileri almak için hedefinizde bazel build <your target> \ --aspects=@rules_python//python:defs.bzl%find_requirements \ --output_groups=pyversioninfoBu işlem, -pyversioninfo.txt son ekine sahip bir dosya oluşturarak hedefinizin neden bir Python sürümü veya başka bir sürüm gerektirdiği hakkında bilgi verir. Belirtilen hedef, sürüm çakışması nedeniyle derleme başarısız olsa bile çalışır.
|
stamp
|
Tam sayı; varsayılan değer |
py_runtime
Kural kaynağını gösterpy_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, platform çalışma zamanını veya derleme içindeki çalışma zamanını temsil edebilir. Platform çalışma zamanı, bilinen bir yoldan sistem tarafından yüklenmiş yorumlayıcıya erişirken derleme içi çalışma zamanı, yorumlayıcı olarak görev yapan yürütülebilir bir hedefe işaret eder. Her iki durumda da "yorumlayıcı", standart CPython yorumlayıcısıyla aynı kuralları uygulayarak komut satırında geçirilen bir Python komut dosyasını çalıştırabilen yürütülebilir ikili program veya sarmalayıcı komut dosyası anlamına gelir.
Platform çalışma zamanı doğası gereği hermetik değildir. Hedef platformda belirli bir yolda bir çevirmenin bulunmasını şart koşar. Derleme içi çalışma zamanı hermetik olabilir veya olmayabilir. Bu durum, çalışma zamanının giriş yapılmış çevirmene mi yoksa sistem çevirmenine erişen bir sarmalayıcı komut dosyasına mı yönlendirmesine bağlı olarak değişebilir.
Ö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; gerekli Bu hedef için benzersiz bir ad. |
bootstrap_template
|
Etiket; varsayılan değer |
coverage_tool
|
Etiket; varsayılan değer py_binary ve py_test hedeflerinden kod kapsamı bilgilerini toplamak için kullanılan bir hedeftir.
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 dosya, python kapsam aracının giriş noktasını belirler. Kapsam etkinleştirildiğinde hedef ve çalıştırma dosyaları, çalıştırma dosyalarına eklenir. Aracın giriş noktası, bir python yorumlayıcısı tarafından yüklenebilir olmalıdır (ör. |
files
|
Etiket listesi; varsayılan |
interpreter
|
Etiket; varsayılan değer |
interpreter_path
|
Dize; varsayılan değer |
python_version
|
Dize; varsayılan değer "PY2" ve "PY3" değerleridir.
Varsayılan değer, |
stub_shebang
|
Dize; varsayılan değer py_binary hedefleri yürütülürken kullanılan önyükleme Python komut dosyasının başına eklendi.
Motivasyon için 8685 numaralı sorunu inceleyin. Windows için geçerli değildir. |