Bir python betiğini (modül değil) ipython'un içinden yolunu belirtmeden çalıştırmak mümkün müdür? PYTHONPATH'ı kurmaya çalıştım ama sadece modüller için çalışıyor gibi görünüyor. Yürütmek isterim
%run my_script.py
dosyayı içeren dizinde olmadan.
Bir python betiğini (modül değil) ipython'un içinden yolunu belirtmeden çalıştırmak mümkün müdür? PYTHONPATH'ı kurmaya çalıştım ama sadece modüller için çalışıyor gibi görünüyor. Yürütmek isterim
%run my_script.py
dosyayı içeren dizinde olmadan.
Yanıtlar:
"my_script.py" dizininden şunları yapabilirsiniz:
%run ./my_script.py
SyntaxError: invalid syntax
Burada, üzerinde Python konsoluna . Debian 9 üzerinde Python 3.5.3. Ancak, IPython üzerinde çalışır.
%run
, Python dilinin bir parçası değil, bir ipython sihirli komutudur.
%run
Sihirli bir parametresi vardır file_finder
(bkz yürütmek için dosyanın tam yolunu almak için kullandığı burada ); not ettiğiniz gibi, sadece mevcut dizine bakar ve gerekirse ".py" ekler.
Kullanımına hangi dosya bulucu belirtmek için bir yol olarak görünmüyor dan%run
büyü, ama kendi sihirli komutunu tanımlayan sizi durdurmak için birşey olmadığını içine aramaları %run
uygun bir dosya bulucu ile.
Bir itibariyle çok kötü hack, varsayılan geçersiz kılmak olabilir file_finder
kendinizinkilerle:
IPython.core.magics.execution.ExecutionMagics.run.im_func.func_defaults[2] = my_file_finder
Dürüst olmak gerekirse, IPython API'sinin değişme hızında, kendi sihrinizi tanımlamak kadar çalışmaya devam etme olasılığı yüksektir.
Python'da modüller ve betikler arasında fark yoktur; Hem komut dosyalarını hem de modülleri çalıştırabilirsiniz. Dosya pythonpath AFAIK üzerinde olmalıdır çünkü python söz konusu dosyayı bulabilmelidir. Python bir dizinden çalıştırılırsa, dizin otomatik olarak python yoluna eklenir.
Bakın başka Python komut gelen bir Python komut dosyası çağırmak için en iyi yolu nedir? modüller ve komut dosyaları hakkında daha fazla bilgi için
İstediğinizi yapacak yerleşik bir execfile (dosya adı) işlevi de vardır.
__name__
== ' __main__
':" satırını kullanarak komut dosyası olarak ikiye katlanabilir
Python 3.6.5 için
import os
os.getcwd()
runfile('testing.py')
runfile()
bir komut ipython
? Benim için kullanıma hazır değil.
import <module>
esasenexec(<moduleSource>)
JavaScript veya Perl ile aynıdır .