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
, .py
kaynak dosyalarından (muhtemelen diğer py_library
kurallarına ait) oluşan, çalıştırma zamanında programın ihtiyaç duyduğu tüm kod ve verileri içeren bir *.runfiles
dizin ağacından ve programı doğru başlangıç ortamıyla ve verileriyle başlatan bir taslak 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 dosya veya testin içinden py_binary
çalıştırmak istiyorsanız (örneğin, bir java_test içinden bazı örnek kaynaklar oluşturmak için bir python ikili dosyası çalıştırmak) doğru yaklaşım, diğer ikili dosyayı veya testi veri bölümündeki py_binary
'ye bağımlı hale getirmektir. Diğer ikili dosya, py_binary
dosyasını kaynak dizine göre 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; zorunlu 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 main.py ise adınız main olmalıdır.
|
deps
|
Etiketler listesi; varsayılan değer deps hakkındaki genel yorumları inceleyebilirsiniz.
Bunlar genellikle
py_library kurallarıdır.
|
srcs
|
Etiketler listesi; zorunlu Hedefi oluşturmak için işlenen kaynak (.py ) dosyalarının listesi.
Bu, tüm kodunuz ve oluşturulan kaynak dosyaları için geçerlidir. 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 'e eklenecek içe aktarma dizinlerinin listesi.
"Değişken yap" değişikliğine tabidir. Bu içe aktarma dizinleri, bu kural ve bu kurala bağlı tüm kurallar için eklenir (not: bu kuralın bağlı olduğu kurallar değil). Her dizin, bu kurala bağlı
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. Yanlış ise kullanıcının, __init__.py dosyalarını (boş olabilir) oluşturması ve gerektiğinde Python hedeflerinin srcs dosyasına eklemesi gerekir.
|
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 herhangi bir dosya adıyla eşleşmiyorsa main belirtilmelidir.
|
python_version
|
Dize; yapılandırılamaz; 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 derleyeceği sürümü belirler ancak #4815 nedeniyle, ortaya çıkan stub komut dosyası çalışma zamanında yine de yanlış yorumlayıcı 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 özelliğinin Python 2, Python 3 veya her ikisiyle de uyumlu olduğunu belirtir. Python çalışma zamanı sürümünü ayarlamak için yürütülebilir bir Python kuralının (py_binary veya py_test ) python_version özelliğini kullanın.
İzin verilen değerler: Yalnızca yürütülebilir kuralların ( Hangi bağımlılıkların sürüm koşulları getirdiği 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, hedefinizin neden bir Python sürümü veya başka bir sürüm gerektirdiği hakkında bilgi veren -pyversioninfo.txt son eki içeren bir dosya oluşturur. Belirtilen hedef, sürüm çakışması nedeniyle oluşturulamamış olsa bile bu yöntemin işe yaradığını unutmayın.
|
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 deps ile ilgili genel yorumları
Çoğu derleme kuralı tarafından tanımlanan tipik özellikler başlıklı makalede bulabilirsiniz.
Bunlar genellikle
py_library kurallarıdır.
|
srcs
|
Etiketler 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 'e eklenecek içe aktarma dizinlerinin listesi.
"Değişken yap" yerine koyma işlemine 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ı
Mutlak yollara ( |
srcs_version
|
Dize; varsayılan değer srcs özelliğinin Python 2, Python 3 veya her ikisiyle de uyumlu olduğunu belirtir. Python çalışma zamanı sürümünü ayarlamak için yürütülebilir bir Python kuralının (py_binary veya py_test ) python_version özelliğini kullanın.
İzin verilen değerler: Yalnızca yürütülebilir kuralların ( Hangi bağımlılıkların sürüm koşulları getirdiği 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, hedefinizin neden bir Python sürümü veya başka bir sürüm gerektirdiği hakkında bilgi veren -pyversioninfo.txt son eki içeren bir dosya oluşturur. Belirtilen hedef, sürüm çakışması nedeniyle oluşturulamamış olsa bile bu yöntemin işe yaradığını unutmayın.
|
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 testi derleyebilir. Test, bazı test kodlarının etrafına yerleştirilmiş bir ikili sarmalayıcıdır.
Örnekler
py_test( name = "runtest_test", srcs = ["runtest_test.py"], deps = [ "//path/to/a/py/library", ], )
Ana modül de belirtilebilir:
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ı
Çoğu derleme kuralı tarafından tanımlanan tipik özellikler başlıklı makalede bulabilirsiniz.
Bunlar genellikle
py_library kurallarıdır.
|
srcs
|
Etiketler listesi; zorunlu Hedefi oluşturmak için işlenen kaynak (.py ) dosyalarının listesi.
Bu, tüm kodunuz ve oluşturulan kaynak dosyaları için geçerlidir. 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 'e eklenecek içe aktarma dizinlerinin listesi.
"Değişken yap" yerine koyma işlemine tabidir. Bu içe aktarma dizinleri, bu kural ve bu kurala bağlı tüm kurallar için eklenir (not: bu kuralın bağlı olduğu kurallar değil). 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. Yanlış ise kullanıcının, __init__.py dosyalarını (boş olabilir) oluşturması ve gerektiğinde Python hedeflerinin srcs dosyasına eklemesi gerekir.
|
main
|
Etiket; varsayılan değer srcs içinde de listelenmelidir. Belirtilmemişse bunun yerine name kullanılır (yukarıya bakın). name , srcs içindeki herhangi bir dosya adıyla eşleşmiyorsa main belirtilmelidir.
|
python_version
|
Dize; yapılandırılabilir değil; varsayılan değer deps özelliğinin) Python 2 veya Python 3 için oluşturulup oluşturulmayacağını belirtir. Geçerli değerler "PY2" ve "PY3" 'tı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 derleyeceği sürümü belirler ancak #4815 nedeniyle, ortaya çıkan stub komut dosyası çalışma zamanında yine de yanlış yorumlayıcı sürümünü çağırabilir. Gerekirse bir Python sürümüne 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: Yalnızca yürütülebilir kuralların ( Hangi bağımlılıkların sürüm gerekliliklerini getirdiği 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, -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ö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, platform çalışma zamanı veya derleme içi çalışma zamanı 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ı kurallara uyarak komut satırında iletilen bir Python komut dosyasını çalıştırabilen tüm yürütülebilir ikili dosyalar veya sarmalayıcı komut dosyalarını ifade eder.
Platform çalışma zamanı doğası gereği hermetik değildir. Hedef platformda belirli bir yolda bir yorumlayıcı bulunması şartı getirir. Yerleşik çalışma zamanı, kontrollü bir yorumlayıcıya mı yoksa sistem yorumlayıcısına erişen bir sarmalayıcı komut dosyasına mı işaret ettiğine bağlı olarak hermetik olabilir veya olmayabilir.
Ö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 ve py_test hedeflerinden kod kapsamı bilgileri toplamak için kullanılacak 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ülebilir bir dosyaysa yürütülebilir dosyanın yolu, 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" 'dir.
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ına eklenen "Shebang" ifadesi.
Motivasyon için 8685 numaralı soruna bakın. Windows için geçerli değildir. |